2012-11-11 47 views
0
大家

您好我有這個問題,我的形式不堅持形式

The CSRF token is invalid. Please try to resubmit the form 

我告訴我的形式,這樣的

<form id="target" action="#" data-idea="{{idea}}" method="post" {{ form_enctype(form) }}> 
     {{ form_widget(form) }} 
     </br> 
     </br> 
     <input type="submit" value="add comment"/> 
    </form> 

在我的控制器中的視圖我有這個

公共功能addCommentAction(){

 $ideaId= $_POST['idea']; 
     $coment= new Comentario(); 
     $form= $this->createForm(new ComentarioFormType(), $coment); 
     $request= $this->getRequest(); 

     if($request->getMethod() == 'POST'){ 
      $form->bindRequest($request); 

      if ($form->isValid()){ 
       $em= $this->getDoctrine()->getEntityManager(); 
       $coment->setIdea($ideaId); 
       $em->persist($coment); 
       $em->flush(); 
      } 
... 
} 

我有錯誤($form->isValid()),如果我調試代碼,當詢問這個... if ($this->hasErrors())並顯示錯誤時,isValid函數返回false。

如果我errase在我的控制線if ($form->isValid()),該funcion鴕鳥政策堅持的形式,因爲該領域descripcion爲空。

這是我的形式

public function buildForm(FormBuilder $builder, array $options) 
{ 
    $builder->add('descripcion', 'textarea'); 

} 

public function getDefaultOptions(array $options){ 
    return array('data_class'=> 'ComentBundle\Entity\Coment'); 
} 

public function getName() 
{ 
    return 'coment'; 
} 

任何想法?

+0

它看起來不錯,你可以發佈您的所有形式的建築規範? –

+0

嗨@穆罕默德艾哈邁德,當然我包括在問 – user852610

+1

對不起,我很困惑,但你有控制器中使用$ this-> creatForm和你的構建窗體函數的名稱是buildForm,它是不同的方法或不是? –

回答

1

試試這個

public function addCommentAction(Request $request){ 
    $ideaId= $_POST['idea']; 
    $coment= new Comentario(); 
    $form= $this->createForm(new ComentarioFormType(), $coment); 


    if($request->getMethod() == 'POST'){ 
     $form->bindRequest($request); 

     if ($form->isValid()){ 
      $em= $this->getDoctrine()->getEntityManager(); 
      $coment->setIdea($ideaId); 
      $em->persist($coment); 
      $em->flush(); 
     } 
    ... 
    } 

注意$請求來自行動聲明聲明

我希望這將有助於