【问题标题】:How to pass data from twig to Symfony2 controller using form如何使用表单将数据从树枝传递到 Symfony2 控制器
【发布时间】:2013-06-24 17:17:20
【问题描述】:

我想知道是否有一种方法可以通过表单将一些变量(来自 textarea 的文本)从 Twig 传递到 Symfony2 控制器。

        <form action="{{ path('admin_core_save') }}" method="post">
            <div id="edit-template">
                {% if template.getData() is defined %}
                    <textarea id="template">{{ template.getData() }}</textarea>
                {% endif %}
            </div>

            <input type="submit" value="Save" />
        </form>

当我按下保存按钮时,它将执行 saveAction() 方法

public function saveAction(Request $request)
{
    var_dump($request);

    return new Response('abc');
}

但响应不包含任何文本区域文本。有没有办法把它弄到那里?

我知道我可以在控制器内构建表单并将其发送到 Twig,但我想知道这种方式是否可行。

【问题讨论】:

    标签: symfony controller twig


    【解决方案1】:

    您可以通过请求对象访问 POST 值,例如:

    $this->get('request')->request->get('name');
    

    【讨论】:

    • 成功了,我忘了我需要将 name="abc" 放在我的文本区域中!感谢您的提示!
    【解决方案2】:

    我相信你必须了解一点Symfony2 Form Component。你会发现 symfony 已经内置了用于渲染表单的系统来处理通过它们发布的用户数据。

    回答您的问题。有一个 Request 对象,可让您完全访问所有请求数据,包括 POST 变量。

    要访问 POST 值,请使用 Request::get() 方法:

    $request->get('variable_name');
    

    要将任何数据传递给树枝模板,请使用TwigEngine::renderResponse

    $this->container->get('templating')->renderResponse('AcmeDemoBundle:Demo:template.twig,html',
        array(
            'someVar' => 'some value'
        )
    );
    

    此变量将在您的模板中可用:

    {{ someVar }}
    

    【讨论】:

    • 谢谢你!它也有效!我终于可以在控制器中获得我的变量名了。
    • @GrzegorzTomasiak 如果对您有帮助,请接受正确答案。
    猜你喜欢
    • 1970-01-01
    • 2014-08-31
    • 2013-08-24
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多