2015-09-28 110 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

相關問題