0

我有一个由 id 定义的 textarea

<textarea id='vegetable'> Tomato </textarea>

我有一个按钮

<button type="button" onclick="MyFunction()">generate vegetable</button>

触发 javascript 以修改 textarea 的内容

<script>
function MyFunction()
{
    document.getElementById("vegetable").innerHTML = VegetableNameGenerator();
}
</script>

问题是这个 php 操作:

<form action="{{ path('mypath', { 'myparam': ??? }) }}" method="post" > 
    <input type="submit" />
</form>

???必须是 textarea 的内容(javascript 代码也知道),但我不知道如何在 twig 中访问它。我想有几种方法可以做到这一点:jquery、dom、全局变量 twig ......任何语法示例都会很棒。

4

1 回答 1

0

这在你描述的方式中是不可能的。

当向服务器发出请求时,twig 会渲染页面,然后将其发送到浏览器,然后 javascript 就可以运行了。

有如何使这项工作的选项:

  1. 创建一个控制器操作,当您使用带有提供的参数的 GET 请求调用它时返回呈现的路径。然后在提交按钮上创建一个事件监听器,它会阻止提交过程,直到它通过 AJAX 检索到路由并修改了表单的 action 属性。

  2. 从您的控制器重定向到您要显示的路径。myparam 将包含在发布数据中,因此您可以在处理完表单后从控制器操作重定向。

    $this->redirect($this->get('router')
                 ->generate('mypath', 
                            array('myparam'=> 
                                  $this->getRequest()->get('myparam')
                                 ), 
                            true);
    
于 2013-03-19T21:37:05.977 回答