我的一个类目前扩展了 FOSUserBundle 上的 BaseController,并返回父操作。但是,由于项目规范,我不需要编辑父类。有没有办法通过子响应发送额外的变量,让树枝渲染?
儿童班:
class ChangePasswordController extends BaseController
{
public function changePasswordAction(Request $request)
{
$response = parent::changePasswordAction($request);
return $response; // and 'myVariable' => $myVariable
}
}
家长班:
class ChangePasswordController extends ContainerAware
{
/**
* Change user password
*/
public function changePasswordAction(Request $request)
{
//lots of code.....
return $this->container->get('templating')
->renderResponse(
'FOSUserBundle:ChangePassword:changePassword.html.'
.$this->container->getParameter('fos_user.template.engine'),
array(
'form' => $form->createView()
//and 'myVariable' => $myVariable
)
);
}
}
总而言之,有没有一种方法可以在不更改父类的情况下将某些内容传递给父类……同时使用附加变量渲染树枝视图。
- 更新 -
本质上,我想使用 FOSUserBundle changePassword 操作呈现一个表单,因此它可以正常工作:
return $this->container
->get('templating')
->renderResponse(
'FOSUserBundle:ChangePassword:changePassword.html.'.$this->container->getParameter('fos_user.template.engine'),
array('form' => $form->createView())
);
但是,我想将更多变量传递给视图,就像如上所示传递“表单”一样,而不更改FosUserBundle ChangePassword Controller。因此,我有一个继承该控制器的类,添加一些附加功能并返回父更改密码操作:
class ChangePassController extends ChangePasswordController
{
public function changePasswordAction(Request $request)
{
// more code......
$response = parent::changePasswordAction($request);
return $response;
}
}
但是,与大多数应用程序一样,我想向视图模板添加的不仅仅是表单变量。那么有没有办法在不改变父控制器/动作的情况下将附加变量传递给视图?喜欢(但不喜欢)将 'myVariable' => $myVariable 推送到父 changePasswordAction 返回语句?