Twig:将表单提交到路径,包括用户输入的字符串

时间:2014-12-22 08:49:49

标签: symfony twig

所以,这里的逻辑是我有一个简单的输入文本框,用户输入车辆字符串, 并将表格提交给车辆/ {vehicleString}

<div class="col-md-5 pull-right">
<form class="navbar-form pull-right" role="search" action="{{  path('vehicles_search', {'vehicleName': vehicleString})  }}">
    <div class="input-group">
        <input type="text" class="form-control" placeholder="Audi, Toyota, ..." name="vehicleString">
        <div class="input-group-btn">
            <button class="btn btn-default" type="submit"><i class="glyphicon glyphicon-search"></i></button>
        </div>
    </div>

然而,我收到以下消息变量&#34; vehicleString&#34;当我试图加载包含搜索表单的页面时,... twig中不存在。 我应该注意,当我从浏览器访问路径时,路径/ vehicles / {vehicleString}工作正常。 有什么建议可以解决它吗?

2 个答案:

答案 0 :(得分:1)

我最近看到的最好的方法是使用vehicleString将表单提交给辅助操作a $ _GET变量,然后重定向到最终网址。

例如......

表格

<form class="navbar-form pull-right" role="search"
        action="{{ path('vehicles_search_handler')  }}">
    <div class="input-group">
        <input type="text" class="form-control" placeholder="Audi, Toyota, ..." 
                name="vehicleString">
        <div class="input-group-btn">
            <button class="btn btn-default" type="submit">
                <i class="glyphicon glyphicon-search"></i>
            </button>
        </div>
    </div>
</form>

vehicles_search_handler

public function vehiclesSearchHandlerAction(Request $request)
{
    $router = $this->container->get('router');
    $vehicleString = $request->query->get('vehicleString', 'none');
    // "none" just making sure a string is set, could be any default

    $url = $router->generate('vehicles_search', ['vehicleName' => vehicleString ]);
    $response = new RedirectResponse($url);

    return $response;
}

答案 1 :(得分:0)

如果我理解正确:您希望表单捕获输入值并根据它生成一些url路径?如果是这样,你做的事情绝对错误。

问题不在于树枝。你需要JavaScript来使它工作。我建议您为此目的使用Angular:您将拥有少量自己的JS代码以使其工作。但是你也可以使用简单的JavaScript或类似jQuery的库来帮助你。