php表单:javascript或textarea html中的细枝参数

php表单:javascript或textarea html中的细枝参数,javascript,forms,variables,symfony,twig,Javascript,Forms,Variables,Symfony,Twig,我有一个由id定义的文本区域 <textarea id='vegetable'> Tomato </textarea> 番茄 我有一个钮扣 <button type="button" onclick="MyFunction()">generate vegetable</button> 生成蔬菜 触发javascript以修改textarea的内容 <script> function MyFunction() { docu

我有一个由id定义的文本区域

<textarea id='vegetable'> Tomato </textarea>
番茄 我有一个钮扣

<button type="button" onclick="MyFunction()">generate vegetable</button>
生成蔬菜
触发javascript以修改textarea的内容

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

函数MyFunction()
{
document.getElementById(“蔬菜”).innerHTML=VegetableNameGenerator();
}
问题在于此php操作:

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

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

从你描述的方式来看,这是不可能的

当向服务器发出请求时,twig呈现页面,然后将其发送到浏览器,然后javascript可以运行

有几种方法可供选择:

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

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

    $this->redirect($this->get('router')
                 ->generate('mypath', 
                            array('myparam'=> 
                                  $this->getRequest()->get('myparam')
                                 ), 
                            true);
    

  • 通过GET传递如此不可预测的长值不是有点尴尬吗?