2015-09-28 99 views
6

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

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

回答

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: ~ 
+0

谢谢你的时间回答我的问题。事实上,这是一种从我的仪表板中删除“添加新的”链接的方法,但它也会删除“列表”链接,我希望列表可以访问。此外,这不会删除顶部工具栏中的链接。 –

3

试试这个我管理员类别:

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

这应该被标记为正确的答案。 – user1970395

相关问题