2015-09-28 2 views
6

Я использую Symfony 2.7 с Sonata Admin Bundle для управления некоторыми продуктами и изображениями продуктов. Я использовал рецепт рецепта Sonata Admin Cookbook: https://sonata-project.org/bundles/admin/master/doc/cookbook/recipe_file_uploads.html для изображений.Sonata Admin: Как удалить кнопку «Добавить новую» только с панели инструментов?

Поскольку изображение должно иметь связанный с ним идентификатор продукта, я хочу отключить ссылку «Добавить новую ссылку» из панели управления администратора 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

В вашей конфигурации администратора сонаты, где вы определяете своих администраторов, удалите тег «group». Это выглядит примерно так.

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

Спасибо за ваше время, отвечая на мой вопрос. В самом деле, это метод, чтобы избавиться от ссылки «Добавить новую» из моей информационной панели, но также удалит ссылку «Список», и я хочу, чтобы список был доступен. Кроме того, это не удаляет ссылку на верхней панели инструментов. –

7

В классе администратора:

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

+0

Это вообще удаляет кнопку 'add' /' create'. –

+0

Я не понимаю вашего комментария –

3

Попробуйте это я n класс администратора:

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

Это должно быть отмечено как правильный ответ. – user1970395

 Смежные вопросы

  • Нет связанных вопросов^_^