我在Symfony 3.1.9中使用EasyAdminBundle。
我设法自定义列表中的操作,这里也解释了: https://github.com/javiereguiluz/EasyAdminBundle/blob/master/Resources/doc/tutorials/custom-actions.md
但我没有找到在表单中添加自定义实体操作的任何文档。
我的目标是添加,靠近"保存","删除"和"返回列表"按钮,一个保存当前实体并重定向到当前编辑表单的按钮(不作为默认行为返回列表)。
提前谢谢
答案 0 :(得分:1)
我的probalby做了一些脏东西,但它确实有用。
我已经覆盖了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 :(得分:0)
Olivier如果您的目标只是重定向回相同实体表单的编辑操作,而不是重定向到列表操作。这很简单。我们假设您正在使用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后端路由。