我的母版页上有一个搜索栏。所有其他页面都在扩展此页面。 我在母版页上有一个搜索文本字段,其定义为
{{Form::open(array('action'=>'TopicsController@searchquery', 'method'=>'GET'))}}
{{Form::input('search', 'q', null, ['placeholder'=>'Search', 'class' => 'search'])}}
{{Form::close()}}
Routes.php条目如下:
Route::get('/searchquery/{q}', [
'uses'=> 'TopicsController@searchquery',
'as' => 'topic.searchquery']);
并且Controller操作看起来像这样
public function searchquery($q)
{
if($search = Request::get('q')){
$topics = Topic::search($search);
}
else {
$topics = Topic::all();
}
$categories = Category::all();
$tags = $this->topicRepo->allTags();
return View::make('topics.topicSearch')->withCategories($categories)->withTopics($topics)->with('term', $q)->withTags($tags);
}
但是,当我执行搜索时,控制器的searchquery中的搜索查询没有获得正确的参数
我的网址如下所示:http://localhost:8000/searchquery/%7Bq%7D?q=test
请帮助。
感谢
答案 0 :(得分:0)
解决此问题的一种方法是从路径定义中删除/{q}
,现在它应该可以正常工作。但我想你希望它有漂亮的方式,/q/term
,而不是像?q=term
。好吧,你没有得到正常的HTML表单提交,但有一点JS你可以这样做:
// jQuery, but it can be done without it
$('form').submit(function() {
document.location.href = '/searchquery/' + $(this).find('input').val();
return false;
});
如果您选择了最后一个解决方案,您可以考虑不在JS代码中对路由进行硬编码,而是可以在表单上的数据属性(例如data-submit-url
)中设置路由。