Sonata管理员:如何仅从仪表板中删除“添加新”按钮?
2022-08-31 00:45:50
我正在使用Symfony 2.7和Sonata Admin Bundle来管理一些产品和产品图像。我使用了Sonata Admin Cookbook配方:https://sonata-project.org/bundles/admin/master/doc/cookbook/recipe_file_uploads.html 图像。
由于图片必须具有关联的产品 ID,因此我想从 Sonata 管理仪表板和顶部工具栏中禁用“添加新”图片链接,以便任何上传的图片都将具有关联的商品。实际上,唯一应该允许添加图像的地方是在产品添加/编辑页面中。
我试图像这样删除路由,根据这里找到的一些答案: Sonata管理仪表板:为每个实体配置操作
protected function configureRoutes(RouteCollection $collection)
{
$container = $this->getConfigurationPool()->getContainer();
if ($container->get('request')->get('_route') == 'sonata_admin_dashboard') {
$collection->remove('create');
}
}
但是这个解决方案并不好,因为,如果我访问管理仪表板时初始化了缓存,则路由会在所有位置删除,但如果缓存在不同的页面上初始化,则路由将出现在所有页面上,包括仪表板,因为Sonata Admin会在显示链接时在模板中验证路由是否存在。
因此,我需要路由存在并删除链接。这可以使用配置来完成,还是我必须重写模板?