1

我想知道是否有一种方法可以通过表单将一些变量(来自 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,但我想知道这种方式是否可行。

4

2 回答 2

1

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

$this->get('request')->request->get('name');
于 2013-06-24T17:50:10.890 回答
0

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

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

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

$request->get('variable_name');

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

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

此 var 将在您的模板中可用,如下所示:

{{ someVar }}
于 2013-06-24T18:02:52.760 回答