我正在使用 SonataAdminBundle 在Symfony 2中生成后台并管理一些实体。我已经在创建表单中添加了我想要的所有属性,而Soanta生成了一个包含3个按钮的视图:Create
,Create and return to list
,Create and add another
。
现在,无论我选择保存表单的按钮,Sonata都会重定向到编辑。我怎么能改变这个?为什么它创建按钮但不进行重定向?
答案 0 :(得分:4)
我遇到了同样的问题,但我找到了解决方法。
您需要做的就是将模型管理控制器类(扩展Sonata \ AdminBundle \ Controller \ CRUDController)中的函数'redirectTo'覆盖到:
/**
* 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中找到此功能。
问题是按钮的值为空,如果条件,则将空字符串视为false。
我认为其他选项可能是为这个按钮添加值,但我认为这个解决方案要简单得多。
这适合我,但我不能说它是完美的解决方案。 :)