Symfony2 - Empty CSRF token


Symfony2 - Empty CSRF token

我部署了一个Symfony2应用程序,但所有表单都有空的csrf令牌。这个html来自firebug。如您所见,标记已正确渲染,但未指定任何值。

<input type="hidden" value="" name="category[_token]" id="category__token">

在我的控制器中:

$form = $this->createForm(new CategoryForm(), new Category());
$form->handleRequest($request);
if ($form->isValid()) {
    (...)
}

在模板中,表单位于bootstrap 3模态内部。

{{ form_start(form) }}
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
                    <h4 class="modal-title" id="myModalLabel">Voeg een tariefplan toe</h4>
                </div>
                <div class="modal-body">
                    <div class="form-group">
                        {{ form_label(form.name) }}
                        {{ form_widget(form.name) }}
                    </div>
                    <div class="form-group">
                        {{ form_label(form.parent) }}
                        {{ form_widget(form.parent, {'attr':{ 'class': 'form-control' }}) }}
                    </div>
                    <div class="form-group">
                        {{ form_label(form.sizes) }}
                        {{ form_widget(form.sizes, {'attr':{ 'class': 'form-control' }}) }}
                    </div>
                    <div class="form-group">
                        {{ form_label(form.description) }}
                        {{ form_widget(form.description, {'attr':{ 'class': 'form-control' }}) }}
                    </div>
                    {{ form_widget(form._token) }}
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-default" data-dismiss="modal">Annuleren</button>
                    {{ form_widget(form.save, {'attr':{ 'class': 'btn btn-primary' }}) }}
                </div>
            </div>
        </div>
{{ form_end(form) }}

我还为CategoryForm类创建了一个要点:http://goo.gl/6NWTkB.

有谁知道我在这里错过了什么?

您必须提供值:

<input type="hidden" value={{ csrf_token('category') }}"" name="category[_token]" id="category__token">

几个想法:

{{ form_end(form) }}应该输出您的令牌,因此不需要:{{ form_widget(form._token) }}

如果您的表单非常大,php可能会截断您的请求vars。请查看您的php.ini中的max_input_vars。我相信默认值是1000。