如何使用表单将数据从twig传递到Symfony2控制器

时间:2013-06-24 17:17:21

标签: symfony controller twig

我想知道是否有一种方法可以通过表单将一些变量(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');
}

但响应不包含任何textarea文本。有没有办法在那里得到它?

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

我确定您必须了解 Symfony2 Form Component 。您会发现symfony已经内置了系统,用于呈现处理通过它们发布的用户数据的表单。

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

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

$request->get('variable_name');

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

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

此var将在您的模板中显示为:

{{ someVar }}