Sonata管理bundle创建并返回列表不起作用



我正在使用SonataAdminBundle在Symfony 2中生成后台并管理一些实体。我已经在创建表单中添加了我想要的所有属性,Soanta生成了一个包含3个按钮的视图:CreateCreate and return to listCreate and add another

现在,不管我选择了哪个按钮来保存我的表单,索纳塔都会重定向我进行编辑。我该如何更改?为什么它创建了按钮,却不进行重定向?

我遇到了同样的问题,但我找到了解决方法。

您所需要做的就是将模型管理控制器类(扩展Sonata\AdminBundle\controller\CRUDController的类)中的函数"重定向到"重写为:

/**
 * redirect the user depend on this choice
 *
 * @param object $object
 *
 * @return Response
 */
protected function redirectTo($object)
{
    $url = false;
    if ($this->get('request')->get('btn_update_and_list') !== null) {
        $url = $this->admin->generateUrl('list');
    }
    if ($this->get('request')->get('btn_create_and_list') !== null) {
        $url = $this->admin->generateUrl('list');
    }
    if ($this->get('request')->get('btn_create_and_create') !== null) {
        $params = array();
        if ($this->admin->hasActiveSubClass()) {
            $params['subclass'] = $this->get('request')->get('subclass');
        }
        $url = $this->admin->generateUrl('create', $params);
    }
    if (!$url) {
        $url = $this->admin->generateObjectUrl('edit', $object);
    }
    return new RedirectResponse($url);
}

您可以在SonataAdminBundle中的CRUDController中找到此函数。

问题是按钮的值是空的,对于if条件,空字符串被视为false。

我认为另一种选择是为这些按钮增加价值,但我认为这个解决方案要简单得多。

这对我有效,但我不能说它是完美的解决方案

最新更新