Я использую EasyAdminBundle в Symfony 3.1.9.
Мне удалось настроить действия в списках, а также объяснил здесь:
https://github.com/javiereguiluz/EasyAdminBundle/blob/master/Resources/doc/tutorials/custom-actions.md
Но я не нашел никакой документации добавить пользовательское действие объекта в формах.
Моя цель — добавить, рядом с кнопками «Сохранить», «Удалить» и «Вернуться к списку» — кнопка, которая сохраняет текущую сущность и перенаправляет на текущую форму редактирования (не возвращается в список в качестве поведения по умолчанию).
действия по редактированию формы объекта
заранее спасибо
Я, вероятно, сделал что-то грязное, но это работает.
Я переписал 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 перенаправляет на реферер, содержащийся в строке запроса.
Большое вам спасибо, чтобы направить меня в правильном направлении.
Оливье Если ваша цель — просто перенаправить обратно на редактирование действия той же формы сущности вместо перенаправления на действие списка. Это довольно просто, как это. Предположим, вы находитесь на новом действии сущности 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.