我正在将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 Admin Dashboard: configure actions per entity

protected function configureRoutes(RouteCollection $collection)
{
    $container = $this->getConfigurationPool()->getContainer();

    if ($container->get('request')->get('_route') == 'sonata_admin_dashboard') {
        $collection->remove('create');
    }
}

但是此解决方案不是很好,因为,如果在我访问管理仪表板时初始化了缓存,那么路由会在所有位置被删除,但是如果缓存是在其他页面上初始化的,那么该路由将出现在所有页面上,包括仪表板,因为在显示链接时,Sonata Admin会在模板中验证路由是否存在。

因此,我需要路由存在并删除链接。可以使用配置完成此操作,还是必须重写模板?

最佳答案

在您的管理员类(class)中:

use Sonata\AdminBundle\Route\RouteCollection;

protected function configureRoutes(RouteCollection $collection)
{
    $collection->remove('create');
}

您还可以删除删除,显示等...

检查:https://sonata-project.org/bundles/admin/master/doc/reference/routing.html#removing-a-single-route

关于php - Sonata管理员: How to remove “Add New” button from dashboard only?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32821747/

10-16 06:35