我是Symfony2的noobie。 handleRequest()
函数不适用于"GET"
方法,而相同的代码适用于"POST"
。
public function addAction(Request $request){
$std = new Student();
$form = $this->createForm(new StudentForm, $std,
array( 'method'=>'GET'));
$form->handleRequest($request);
if($form->isSubmitted()){
$std= $form->getData();
$em= $this->getDoctrine()->getManager();
$em->persist($std);
$em->flush();
return $this->render('target.twig');
}
return $this->render('target twig',
array('newStdForm'=> $form->createView(),));
}
上述代码无效,但如果我将'method':'GET'
更改为'method':'POST'
,则可以正常使用。
答案 0 :(得分:18)
在StudentForm类的buildForm方法中指定表单的方法。因此,handleRequest将能够获取GET参数。
class StudentForm
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
// ...
$builder->setMethod('GET');
}
}
答案 1 :(得分:1)
我认为这是因为在POST请求中,参数在HTTP请求的主体中传递。而handleRequest在请求正文中查找这些值。但是在GET请求中,参数直接在url中传递。所以我认为这就是处理不起作用的原因。
通常我们使用GET来获取页面或网址以及POST以将信息发送到服务器。
答案 2 :(得分:0)
你确定你的树枝模板是正确的吗?
答案 3 :(得分:0)
我今天遇到了这个问题。 Pierre Roland的回答对于当前版本来说是部分正确的。 我检查了默认" HttpFoundationRequestHandler"在" handleRequest"。
中调用将考虑明确的GET表单"提交"如果: