mit*_*tas 4 php forms symfony-forms symfony twig
我有indexAction和contactAction
contactAction是一个简单的表单,没有映射字段(FormType),如下所示:
/**
* @Route("/contact", name="contact")
* @Template()
* @param Request $request
* @return array
*/
public function contactAction(Request $request)
{
$form = $this->createForm(new ContactType());
$form->handleRequest($request);
if ($form->isValid()) {
$firstName = $form->get('first_name')->getData();
$lastName = $form->get('last_name')->getData();
$email = $form->get('email')->getData();
$message = $form->get('message')->getData();
}
return array(
'form' => $form->createView()
);
}
Run Code Online (Sandbox Code Playgroud)
我用这个TWIG命令在我的indexAction中渲染这个表单:
{{ render(controller('RusselBundle:Default:contact')) }}
Run Code Online (Sandbox Code Playgroud)
一切都很好,如果页面没有重新加载,HTML5验证器工作正常,但如果表单有一些错误,如:firstName长度,错误根本不显示,我该怎么办,以便错误出现在indexAction形式?任何帮助,将不胜感激.我只是好奇它是可能的,如果 - 如何?对不起我的英语不好....
您应该从请求堆栈中获取主请求,而不是使用传递给操作的请求.正如@DebreczeniAndrás所说,当您使用时,render(controller())您正在使用新创建的子请求,而不是实际传递给加载页面的请求(主请求).
public function contactAction(Request $request)
{
$request = $this->get('request_stack')->getMasterRequest();
$form = $this->createForm(new ContactType());
//...
}
Run Code Online (Sandbox Code Playgroud)