handleRequest($ request)对Symfony 2中的"GET"方法不起作用

Swa*_*ass 8 get symfony

我是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(),));
}
Run Code Online (Sandbox Code Playgroud)

上面的代码不起作用,但如果我'method':'GET'改为'method':'POST',那么它工作正常.

小智 18

在StudentForm类的buildForm方法中指定表单的方法.因此,handleRequest将能够获取GET参数.

class StudentForm
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
         // ...
        $builder->setMethod('GET');
    }
}
Run Code Online (Sandbox Code Playgroud)


Lun*_*fel 1

我认为这是因为在 POST 请求中,参数是在 HTTP 请求的正文中传递的。该handleRequest 会在请求正文中查找这些值。但在 GET 请求中,参数是直接在 url 中传递的。所以我认为这就是处理不起作用的原因。

通常我们使用 GET 来获取页面或 url,并使用 POST 来将信息发送到服务器。