Javascript 细枝:传递文本字段值作为路由参数

Javascript 细枝:传递文本字段值作为路由参数,javascript,html,symfony,routing,twig,Javascript,Html,Symfony,Routing,Twig,我正在尝试路由到另一个页面,需要传递一个textfield值。这是我的代码: {% extends "base.html.twig" %} {% block body %} <button onclick="host()">Host the session</button> <button onclick="join()">Join as player</button> <label> Play

我正在尝试路由到另一个页面,需要传递一个textfield值。这是我的代码:

{% extends "base.html.twig" %}

{% block body %}
    <button onclick="host()">Host the session</button>
    <button onclick="join()">Join as player</button>
    <label>
        Player name:
        <input type="text" id="nameField">
    </label>
{% endblock %}
{% block javascripts %}
    <script>
        function host() {
            location.href = "{{ path('host') }}";
        }

        function join() {
            location.href = "{{ path('player', {'playerName' : nameField.value}) }}";
        }
    </script>
{% endblock %}
当我点击join时,我得到一个运行时异常,说“nameField”不存在。我尝试将textfield值放入javascript变量中,但我也无法引用该变量。
这样的路线有可能吗?或者,我是否可以避免直接在主体块中使用javascript和route?

您需要从app.request数组中获取它

这是邮递服务

app.request.get('nameFiled')
这对GET有效

app.request.query.get('nameFiled')
如果您的输入名称是nameField

<input name="nameField">

看一看,它将帮助您纯粹使用JSF构建URL。我觉得很奇怪,我的基本用例需要一个社区包。没有其他方法可以引用Twig中的简单文本字段吗?Symfony本身不支持您非常基本的用例,因为它不完全基于路由的后端生成:当Twig运行时,没有像nameField这样的字段来访问来自的值,这听起来好像我所做的不是Symfony的最佳实践。在控制器中创建一个包含my textfield的表单,然后使用响应进行路由,这是否“更干净”呢?问题是,twig在将模板传递到处理JS的客户端之前呈现模板。因此,在您的服务器上,它尝试替换属性nameField.value,该属性旨在让JS解析要使用的URL。您可以用一个有效的占位符值替换它,该占位符值将使用JS进行切换,或者使用静态URL而不是twig中的helper方法,或者您可以查看捆绑包。这与OP的问题无关