2017-01-16 9 views
-1

Я использую EasyAdminBundle в Symfony 3.1.9.Symfony EasyAdminBundle - Как добавить пользовательское действие в форме объекта?

мне удалось настроить действия в списках, а также объяснены здесь: https://github.com/javiereguiluz/EasyAdminBundle/blob/master/Resources/doc/tutorials/custom-actions.md

Но я не нашел какой-либо документации к добавить настраиваемое действие лица в формах.

Моя цель - добавить, рядом с кнопками «Сохранить», «Удалить» и «Назад к списку», которая сохраняет текущую сущность и перенаправляет на текущую форму редактирования (а не возвращать в список по умолчанию).

entity form edit actions

Спасибо заранее

ответ

0

Я пробовал сделать что-то грязное, но оно работает.

Я перезаписан в editAction:

public function editAction() 
{ 
    $response = parent::editAction(); 

    if ($response instanceof RedirectResponse) {    

     $request = Request::createFromGlobals(); 
     return $this->redirect(urldecode($request->request->get('referer')));   
    } 

    return $response; 
} 

Метод $ this-> getCurrentEntity() были неизвестны.

Я также перезаписан в edit.html.twig добавить еще одну кнопку, расположенную рядом с основной один с JQuery:

var cloned = $("button.action-save"); 
var clone = cloned.clone(); 
cloned.after(clone); 
clone.addClass('action-save-stay') 
clone.html('<i class="fa fa-save"></i>{{ 'action.save_stay'|trans }}'); 

$('.action-save-stay').bind('click', function(e) { 
    e.preventDefault(); 
    $('input[name="referer"]').val(window.location.href); 
    $('form').submit(); 
}); 

Он изменяет скрытый ввод имени реферер. По умолчанию easyadmin перенаправляет референт, содержащийся в строке запроса.

Большое вам спасибо, чтобы поправить меня в правильном направлении.

0

Оливье Если ваша цель просто перенаправить обратно редактировать действие той же формы лица вместо перенаправления в список действий. Это довольно просто. Предположим, что вы находитесь на новом действии объекта Product и хотите вернуться к редактированию после сохранения нового продукта.

public function newProductAction() 
{ 
    $response = parent::newAction(); 

    if ($response instanceof RedirectResponse) { 

     $entity = $this->getCurrentEntity(); 

     return $this->redirectToRoute('admin', [ 
      'entity' => 'Product', 
      'action' => 'edit', 
      'id' => $entity->getId() 
      'menuIndex' => 1 
     ]); 
    } 

    return $response; 
} 

Здесь 2 очка иметь в виду menuIndex для активного класса меню так, он может быть изменен в соответствии с вашей последовательности. И перенаправление маршрута «админ» должно быть вашим маршрутом easyadmin.