-1

我在 Symfony 3.1.9 中使用 EasyAdminBundle。

我设法自定义列表中的操作,这里也有解释: https ://github.com/javiereguiluz/EasyAdminBundle/blob/master/Resources/doc/tutorials/custom-actions.md

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

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

实体表单编辑操作

先感谢您

4

2 回答 2

1

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

我已经覆盖了 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() 方法未知。

我还用 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();
});

它更改了名为 referer 的隐藏输入。默认情况下,easyadmin 会重定向到查询字符串中包含的引用者。

非常感谢你让我朝着正确的方向前进。

于 2017-01-19T12:39:39.340 回答
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 点记住 menuInde​​x 是针对活动菜单类的,所以它可能会根据您的顺序进行更改。并且重定向路由“管理员”应该是您的 easyadmin 后端路由。

于 2017-01-18T10:28:00.290 回答