Sonata Admin:如何仅从仪表板中删除“添加新”按钮?

时间:2015-09-28 11:21:06

标签: php symfony configuration-files sonata-admin dashboard

我正在使用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会在模板中验证。

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

4 个答案:

答案 0 :(得分:12)

在您的管理类中:




 使用Sonata \ AdminBundle \ Route \ RouteCollection;

 protected function configureRoutes(RouteCollection $ collection )
 {
 $收藏 - >清除( '创建');
 }
  




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





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




答案 1 :(得分:6)

在管理类中尝试此操作:

public function getDashboardActions() {
    $actions = parent::getDashboardActions();
    unset($actions['create']);
    return $actions;
}

答案 2 :(得分:4)

在下文中,您可以看到隐藏Sonatadmin功能的选项列表:

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

答案 3 :(得分:0)

在您定义管理员的奏鸣曲管理员配置中,删除"组"标签。它看起来像这样。

services:
    sonata.admin.images:
        class: AppBundle\Admin\ImageAdmin
        tags:
            - { name: sonata.admin, manager_type: orm, group: "Content", label: "Manage images" }
        arguments:
            ...

(删除group: "Content"或您组中设置的任何内容

这会将您的图片管理员放在名为"默认"。

的单独块中

然后,明确定义您在仪表板上显示的块,省略"默认":

sonata_admin:
    dashboard:
        groups:
            Content: ~
            AnotherGroup: ~