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

Symfony EasyAdminBundle - How to add a custom action in entity form?

我在 Symfony 3.1.9 中使用 EasyAdminBundle。

我设法自定义了列表中的操作,并在此处进行了说明: https://github.com/javiereguiluz/EasyAdminBundle/blob/master/Resources/doc/tutorials/custom-actions.md

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

我的目标是在 "Save"、"Delete" 和 "Back to list" 按钮附近添加 ,一个保存当前实体和重定向的按钮到当前编辑表单(不是 return 列为默认行为)。

entity form edit actions

提前致谢

Olivier 如果您的目标只是重定向回相同实体表单的编辑操作而不是重定向到列表操作。这很简单。假设您正在进行产品实体的新操作,并希望在保存新产品后返回编辑。

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 点 menuInde​​x 用于活动菜单 class 因此,它可能会根据您的顺序进行更改。重定向路由 'admin' 应该是您的 easyadmin 后端路由。

我可能弄脏了一些东西,但它确实有效。

我已经覆盖了 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 重定向到查询字符串中包含的引用。

非常感谢你指引我正确的方向。