所以,这里的逻辑是我有一个简单的输入文本框,用户输入车辆字符串, 并将表格提交给车辆/ {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}工作正常。 有什么建议可以解决它吗?
答案 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的库来帮助你。