2012-11-11 48 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(); 
     } 
    ... 
    } 

注意$请求来自行动声明声明

我希望这将有助于