保存实体后如何保持编辑表单而不重定向到列表视图?我尝试了一些动作,但似乎没有任何效果。
问问题
1438 次
1 回答
3
EasyAdmin 在 AdminController.php 的“redirectToReferrer()”方法中硬编码了重定向行为。重定向规则的顺序是:
- 如果可能,重定向到列表
- 从新|编辑操作,如果可能,重定向到编辑
- 从新动作,如果可能,重定向到新动作
- 其他:重定向到主页
你想要的是用第一条规则切换第二条规则。
您可以通过扩展 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();
}
这样,首先应用您的规则,如果它与原始重定向规则不匹配,则应用。您还可以在此处添加消息以确认实体已成功保存。
于 2018-07-05T13:59:58.397 回答