EasyAdmin как остаться в форме редактирования
Как остаться в форме редактирования и не перенаправлять в список после сохранения объекта? Я пытался с действиями, но ничего не работает.
С наилучшими пожеланиями
1 ответ
EasyAdmin жестко запрограммировал поведение перенаправления в методе "redirectToReferrer()" в AdminController.php. Порядок правил перенаправления:
- перенаправить в список, если это возможно
- из нового | редактировать действие, перенаправить для редактирования, если это возможно
- от нового действия, перенаправить на новое, если это возможно
- еще: перенаправить на домашнюю страницу
То, что вы хотите, это переключить второе правило с первым правилом.
Вы можете сделать это, расширив AdminController.php и переопределив метод "redirectToReferrer()" своей собственной логикой и изменив порядок правил перенаправления.
Чтобы быть немного менее инвазивным, вы можете переопределить его следующим образом:
/**
* @return \Symfony\Component\HttpFoundation\RedirectResponse
*/
protected function redirectToReferrer()
{
$refererAction = $this->request->query->get('action');
// from new|edit action, redirect to edit if possible
if (in_array($refererAction, array('new', 'edit')) && $this->isActionAllowed('edit')) {
return $this->redirectToRoute('easyadmin', array(
'action' => 'edit',
'entity' => $this->entity['name'],
'menuIndex' => $this->request->query->get('menuIndex'),
'submenuIndex' => $this->request->query->get('submenuIndex'),
'id' => ('new' === $refererAction)
? PropertyAccess::createPropertyAccessor()->getValue($this->request->attributes->get('easyadmin')['item'], $this->entity['primary_key_field_name'])
: $this->request->query->get('id'),
));
}
return parent::redirectToReferrer();
}
Таким образом, ваше правило применяется в первую очередь, и если оно не соответствует исходным правилам перенаправления. Вы также можете добавить сюда сообщения, чтобы подтвердить, что объект был успешно сохранен.