2016-02-01 1 views
2

Ну, у меня довольно простая проблема с Sonata Admin в моем проекте Symfony2.Как добавить глобальное действие в администратор сонаты?

У меня есть список продуктов с каждым продуктом, продаваемым в моем интернет-магазине. В верхнем правом меню «действия» у меня есть действия по умолчанию с одним действием «Добавить новое».

List view in sonata admin

Я просто хочу добавить несколько действий рядом с «Добавить»: пользовательские действия, как «удалить промо-цены от всех продуктов», или «удалить все продукты оценки».

Я не хочу «пакетного» действия, я хочу «глобальное» действие, ведущее к пользовательскому запросу БД.

Все, что я нашел в документе, связано с пакетными действиями или «действием одной строки». Есть ли способ сделать то, что я хочу?

Благодарим за помощь!

ответ

6

Create and configure a custom admin extension и переопределить метод configureActionButtons(AdminInterface $admin, $list, $action, $object) добавить пользовательские действия:

use Sonata\AdminBundle\Admin\AdminExtension; 
use Sonata\AdminBundle\Admin\AdminInterface; 
use Sonata\AdminBundle\Route\RouteCollection; 

class CustomGlobalActionsExtension extends AdminExtension 
{ 
    public function configureActionButtons(AdminInterface $admin, $list, $action, $object) 
    { 
     return array_merge($list, [ 
      ['template' => 'admin/custom_action.html.twig'] 
     ]); 
    } 

    public function configureRoutes(AdminInterface $admin, RouteCollection $collection) 
    { 
     $collection->add('custom_action', $admin->getRouterIdParameter().'/custom_action'); 
    } 
} 
{# app/Resources/views/admin/custom_action.html.twig #} 
<a class="btn btn-sm" href="{{ admin.generateObjectUrl('custom_action', object) }}">Custom Action</a> 

Смотрите также https://sonata-project.org/bundles/admin/2-3/doc/cookbook/recipe_custom_action.html

+0

Да! Спасибо Wouter! :) – wewereweb

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

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