我正在编写三个简单的表单处理函数。除了验证检查之后的部分之外,它们都是相同的,所以我决定创建一种“模板”函数,其中包含直到验证 if 指令的整个代码。
因此,这三个函数只包含负责正确处理表单的代码。
模板函数看起来像这样:
public function templateAction($formName) {
$form = $this->createForm(new {$formName.'Type'}() new $formName());
$request = $this->getRequest();
if($request->getMethod() == 'POST') {
$form->bind($request);
if($form->valid()) {
$this->{'set'.$formName}($form);
return array();
}
}
}
现在,有了Foo
表单,将其名称 (Foo) 作为参数传递,我得到了仅基于其名称呈现的表单,以及包含该名称的相应私有方法。
问题是- 我如何使用$this->redirect()
函数来调用这个“模板”方法并传递正确的参数?
/**
* @Route("/FooController/Template/{formName}", name="/FooController/Template/{formName}")
*/
这不起作用 - sf 抛出一个找不到路线的错误......我也尝试了一些其他组合,但没有奏效......我应该如何处理这个?
这种“模板”表单处理方法可以吗?我认为它可能会减少重复,但是如果我有一种方法应该在验证部分之前有不同的代码呢?
另外,有没有办法将表单处理与控制器分开,并将其放在其他地方?