2015-08-03 83 views
0

所以......基本上它。我有一个表单类,然后我渲染,但总是返回csrf错误。SYMFONY2 - CSRF令牌无效Allwais

Form类:

class FormTest extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
      ->add(
       'urlTo', 
       'url' 
      ) 
     ->add('submit', 'submit'); 
    } 

public function getName() 
{ 
    return ''; 
} 

}

在控制器:

... 
$form = $this->createForm(new FormTest()); 

$form->handleRequest($request); 

    if ($form->isSubmitted()) { 
     if ($form->isValid()) { 
      echo 1; die; 
     } 
    } 

当我看到 “isSubmited”,并尝试 “的getData” 我刚刚得到的URL字段中,令牌不是,我不知道它是否正确。

查看:

{{ form_start(form) }} 

       {{ form_widget(
       form.linkTo, 
       { 
        'attr' : { 
        'class' : 'form-control col-xs-12', 
        'placeholder' : 'url here' 
       } 
       } 
       ) }} 

       {{ form_errors(form) }} 

       {{ form_widget(
       form.submit, 
       { 
        'label' : ' START', 
        'attr' : { 
        'class' : 'btn glyphicon glyphicon-send' 
       } 
       } 
       ) }} 

       {{ form_end(form) }} 

就是这样,ALLWAYS返回CSRF令牌无效。

好了,问题是标识并不是存储在会话...但我不知道为什么

+0

尝试添加\t''到树枝模板 – timhc22

+0

可能的重复[Symfony的2当使用没有类的表单时添加CSRF令牌](http://stackoverflow.com/questions/16136188/symfony-2-add-csrf-token-when-using-a-form-without-a-class) – timhc22

+0

这不是同一个问题。这是一个会议问题。 –

回答

0

您需要使用form_rest(form)这使得剩余的字段包括令牌或者你需要使用form_row(form._token)来手动渲染令牌。

form_end(form)基本上只是</form>

+0

你有一个带'''urlTo'''的表单和一个带'''form.linkToDownload'''的模板。这对我来说并不合适。 –

+0

啊是的,但它是相同的领域,我改变了它,但我忘了改变他所有的代码,对不起 –