首页 > 解决方案 > Twig:将文本字段值作为路由参数传递

问题描述

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

{% 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 %}

当我单击加入时,我得到一个运行时异常,说“nameField”不存在。我尝试将文本字段值放入 javascript 变量中,但我也无法引用该变量。
有可能像这样路由吗?或者,我可以以某种方式避免直接在正文块中使用 javascript 和路由吗?

标签: javascripthtmlsymfonyroutingtwig

解决方案


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

这适用于 POST

app.request.get('nameFiled')

这适用于 GET

app.request.query.get('nameFiled')

如果您的输入名称是 nameField

<input name="nameField">

推荐阅读