我是一个laravel新手!并努力寻找如何创建搜索并返回结果。
这是我在gist https://gist.github.com/anonymous/8289692
上的所有代码我把所有内容都放在从表格到路线,控制器和模型的要点中!
/* Route */
Route::get('/search/{q}', 'HomeController@search');
/* Form from web page */
<form class="navbar-form navbar-left" role="search" action="/search/" method="post">
<div class="input-group">
<input type="text" class="form-control" placeholder="Search Programmes" name="1">
<span class="input-group-btn">
<input type="submit" class="btn btn-primary" value="Search">
</span>
</div><!-- /input-group -->
</form>
/* Controller */
public function search($q)
{
$q = Input::get('term');
$searchTerms = explode(' ', $q);
$query = DB::tables('wc_program');
foreach($searchTerms as $term)
{
$query->where('JobRef', 'LIKE', '%'. $term .'%');
}
$results = $query->get();
}
/* Model (just in case) */
class Search extends Eloquent {
protected $table = 'wc_program';
public $timestamps = false;
}
答案 0 :(得分:1)
您的代码中有一些问题:
您的表单正在使用POST
方法,但您的路由是GET路由。这说明了NotFoundHttpException
。所以让你的路线像:
Route::post('search', 'HomeController@search');
不需要参数,因为无论如何你用POST来捕捉它,而不是GET!
<小时/> 您的输入没有名称&#39; term&#39;,但&#39; 1&#39;。这可能是一个错字,但无论如何,这样做:
<input type="text" class="form-control" placeholder="Search Programmes" name="term">
另外,我建议使用Laravel的URL方法来构建正确的URL:
<form class="navbar-form navbar-left" role="search" action="{{URL::to('search')}}" method="post">
或更好:
{{Form::open(array('url' => 'search', 'class' => 'navbar-form navbar-left', 'role' => 'search')}}
<小时/> 现在,到控制器。让我们重写以适应新路线:
public function search() //no parameter now
{
$q = Input::get('term');
if($q && $q != ''){
$searchTerms = explode(' ', $q);
$query = DB::table('wc_program'); // it's DB::table(), not DB::tables
if(!empty($searchTerms)){
foreach($searchTerms as $term) {
$query->where('JobRef', 'LIKE', '%'. $term .'%');
}
}
$results = $query->get();
dd($results); // for debugging purpose. Use a View here
}
}