Php Symfony EasyAdminBundle-如何以实体形式添加自定义操作?

Php Symfony EasyAdminBundle-如何以实体形式添加自定义操作?,php,symfony,symfony2-easyadmin,Php,Symfony,Symfony2 Easyadmin,我正在使用Symfony 3.1.9中的EasyAdminBundle 我设法自定义列表中的操作,并在此处进行了详细说明: 但是我没有找到任何文档来在表单中添加自定义实体操作 我的目标是在“保存”、“删除”和“返回列表”按钮附近添加,这是一个保存当前实体并重定向到当前编辑表单(而不是作为默认行为返回列表)的按钮 如果您的目标只是重定向回同一实体表单的编辑操作,而不是重定向到列表操作,请提前感谢您。像这样很简单。假设您正在执行产品实体的新操作,并希望在保存新产品后返回编辑 public fun

我正在使用Symfony 3.1.9中的EasyAdminBundle

我设法自定义列表中的操作,并在此处进行了详细说明:

但是我没有找到任何文档来在表单中添加自定义实体操作

我的目标是在“保存”、“删除”和“返回列表”按钮附近添加,这是一个保存当前实体并重定向到当前编辑表单(而不是作为默认行为返回列表)的按钮


如果您的目标只是重定向回同一实体表单的编辑操作,而不是重定向到列表操作,请提前感谢您。像这样很简单。假设您正在执行产品实体的新操作,并希望在保存新产品后返回编辑

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;
}

这里有两点要记住menuIndex是用于活动菜单类的,所以它可能会根据您的顺序进行更改。重定向路由“admin”应该是您的easyadmin后端路由。

我可能弄脏了一些东西,但它可以工作

我已覆盖编辑操作:

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()未知

我还用jQuery覆盖了edit.html.twig,在基本按钮旁边添加了另一个按钮:

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();
});
var cloned=$(“button.action保存”);
var clone=clone.clone();
克隆。之后(克隆);
clone.addClass('action-save-stay')
html(“{”action.save_stay“{trans}”);
$('action save stay').bind('click',函数(e){
e、 预防默认值();
$('input[name=“referer”]').val(window.location.href);
$('form').submit();
});
它更改名为referer的隐藏输入。 默认情况下,easyadmin重定向到查询字符串中包含的referer

非常感谢你给我指明了正确的方向