Панель управления Sonata Admin: настройка действий для каждого объекта - PullRequest
5 голосов
/ 06 марта 2012

Я использую SonataAdminBundle в качестве основы для интерфейса администрирования для веб-сайта на платформе Symfony2 (v2.0.x).

Объекты, которые добавляются на панель мониторинга в SonataAdmin, по умолчанию выполняют следующие действия:

  • добавить
  • список

Это прекрасно работает для большинства объектов, однако на веб-сайте есть несколько объектов, для которых данные не добавляются через интерфейс администратора, т. Е. Они вводятся с общедоступного веб-сайта. Администраторы должны только просматривать их (действие «список» на панели инструментов), редактировать или удалять их. Администраторы не должны иметь возможность добавлять данные к этим объектам.

Есть ли способ настроить, какие действия отображаются рядом с отдельными объектами в панели управления SonataAdmin?

Ответы [ 2 ]

11 голосов
/ 07 марта 2012

В вашем EntityAdmin классе добавьте следующий

public function configureRoutes(RouteCollection $collection)
{
  $collection->remove('create');
}
9 голосов
/ 21 августа 2012

Чтобы удалить отдельный маршрут из вашего Admin класса, используйте

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

В Symfony 2.1 + , вы можете использовать clearExcept удалить все маршруты , за исключением указанных, например:

public function configureRoutes(RouteCollection $collection)
{
  $collection->clearExcept(array('list', 'edit', 'delete', 'batch'))
}

Преимущество заключается в том, что вы сохраняете свои действия такими, какими они являются в случае добавления новых действий в SonataAdminBundle.

В Symfony 2.0 есть аналогичная недокументированная функция (спасибо Джероену):

public function configureRoutes(RouteCollection $collection)
{
  $collection->removeAllExcept(array('list', 'edit', 'delete', 'batch'))
}
...