Joe*_*Joe 5 validation symfony
我将表单提交给与输出表单的控制器不同的控制器.
我的问题是你如何检查提交的数据是否有效?
我尝试过几件事.我要验证的主要内容是"_token"
我该怎么做呢?
这是我的代码示例.
/*
Out put the search form
*/
public function searchAction(Request $request)
{
$form = $this->createFormBuilder()
->setAction($this->generateUrl('email_search')) # <- route to the search process controler
->setMethod('GET')
->add('userSearch', 'text',array(
'required' => true,
'label' => false,
'attr' => array(
'placeholder' => 'Search User Email',
)
)
)
->add('Serch', 'submit')
->getForm();
return $this->render(
'TwigBundle:Search:Search.html.twig',
array(
'form' => $form->createView( )
)
);
}
/*
Process the search
*/
public function emailResultsAction(Request $request){
$form = $this->createFormBuilder()->getForm();
$form->handleRequest($request);
if ($form->isValid()) {
$ret = $_POST;
}else{
$ret = 'failed';
}
/*
... Process the search
*/
return new Response(print_r($ret));
}
Run Code Online (Sandbox Code Playgroud)
这给出了错误:
"Call to undefined function Acmy\UserBundle\Controller\getForm() in xxxxxxx"
Run Code Online (Sandbox Code Playgroud)
我可以自己验证搜索,但我不知道如何验证_token.
这似乎没有在Symfony2文档中介绍.
提前致谢.
将表单创建分成它自己的表单类http://symfony.com/doc/current/book/forms.html#creating-form-classes.
通过执行此操作,您可以在第二个方法/控制器中创建表单,然后使用handleRequest将请求绑定到表单,然后通过执行检查表单是否有效
if ($form->isValid()){...
Run Code Online (Sandbox Code Playgroud)
您可以在控制器中创建一个方法来创建表单,然后使用该方法从两个操作中获取 Form 类。
伪:
private function buildSearchForm() {
return $this->createFormBuilder()
->setAction(...)
// ...
}
public function searchAction(Request $request) {
$form = $this->buildSearchForm();
// Do the necessary things
}
public function emailResultsAction(Request $request) {
$form = $this->buildSearchForm();
// Do your validation here
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5238 次 |
最近记录: |