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

Я использую EasyAdminBundle в Symfony 3.1.9.

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

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

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

действия по редактированию формы объекта

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

-1

Решение

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

Я переписал 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();
});

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

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

1

Другие решения

Оливье Если ваша цель — просто перенаправить обратно на редактирование действия той же формы сущности вместо перенаправления на действие списка. Это довольно просто, как это. Предположим, вы находитесь на новом действии сущности 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 для активного класса меню, поэтому он может быть изменен в соответствии с вашей последовательностью. И перенаправленный маршрут ‘admin’ должен быть вашим внутренним маршрутом easyadmin.

0

По вопросам рекламы [email protected]