变量“csrf_token”不存在

时间:2017-03-28 01:24:12

标签: php symfony

我是symfony 2.5.6的初学者,我想使用我自己的表单登录,所以这是我的twig代码:

{% extends "FOSUserBundle::layout.html.twig" %}

{% trans_default_domain 'FOSUserBundle' %}

{% block fos_user_content %}
    {% if error %}
        <div>{{ error.messageKey|trans(error.messageData, 'security') }}</div>
    {% endif %}

{% block body %}




        <div class="login">
            <h1>Login</h1>

                    <form action="{{ path("fos_user_security_check") }}" method="post">
                    <input type="hidden" name="_csrf_token" value="{{ csrf_token }}" />

                <input type="text" placeholder="Username" id="username" name="_username" required="required" />
                <input type="password" placeholder="Password" id="password" name="_password" required="required" />
                <button type="submit" id="_submit" name="_submit" class="btn btn-primary btn-block btn-large">Let in now.</button>
            </form>


        </div>


    {% endblock %}

{% endblock fos_user_content %}

搜索后,我想在此链接中使用此代码:Symfony FOSUserBundle - include login form in layout template

在我自己的控制器中我把这段代码:

public function getTokenAction()
{
    return new Response($this->container->get('form.csrf_provider')
                            ->generateCsrfToken('authenticate'));
}

现在我以“twig file”的形式添加此内容:

<form action="{{ path("fos_user_security_check") }}" method="post">
                    <input type="hidden" name="_csrf_token" value="{% render('YourBundle:YourController:getToken') %}" />

                <input type="text" placeholder="Username" id="username" name="_username" required="required" />
                <input type="password" placeholder="Password" id="password" name="_password" required="required" />
                <button type="submit" id="_submit" name="_submit" class="btn btn-primary btn-block btn-large">Let me in.</button>

我收到此错误:

  

在渲染模板期间抛出了异常(“No   找到“GET YourController:getToken”“)的路线

我知道我需要在我的路由文件中使用它:

myproject_homepage:
    path:     /hello2
    defaults: { _controller: myproject:Default:getToken }

但是,如果我这样做生病不能回到我的树枝病,只需从hello2链接获取一个值:(

请帮助我,我该怎么办?

先谢谢你

0 个答案:

没有答案