2014-01-06 11 views
-1

나는 초보자입니다! 검색을 작성하고 결과를 리턴하는 방법을 찾으려 고 고군분투하고 있습니다.Laravel - Eloquent를 사용하여 사이트에서 시설 검색

여기에 내가 경로, 컨트롤러와 모델에 양식에서 요점 모든 것을 넣었습니다

https://gist.github.com/anonymous/8289692 요점

내 모든 코드입니다!

/* Route */ 
Route::get('/search/{q}', '[email protected]'); 


/* 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

은 (어서, 그것은 코드의 40 개 라인이다). 어쨌든, 뭐가 문제 야? 뭘 도와? 작동 안됨? 그것은 무엇을해야 하는가/대신 무엇을해야 하는가? –

+0

의 문제는 당신이 아닌 외부 리소스에, 여기에 코드를 삽입한다 무엇

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

+0

다음과 같은 오류를 반환합니다 : Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException –

답변

1

일부 코드에서 문제 있습니다


양식이 POST 방법을 사용하고,하지만 경로는 GET 경로입니다. 그리고 이것은 NotFoundHttpException을 차지합니다. 매개 변수에 대한 필요가 없습니다

Route::post('search', '[email protected]'); 

당신 어쨌든 POST로 잡기 때문에,하지 : 그래서 같은 경로를 만들!


입력 내용의 이름이 'term'이 아니지만 '1'입니다. 또한

<input type="text" class="form-control" placeholder="Search Programmes" name="term"> 

을, 내가 올바른 URL을 구축 할 Laravel의 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')}} 
을 그 때문에 그것을 만들 어쨌든 오타 수 있지만 수


이제 컨트롤러에. 의 새로운 경로에 적합하게 다시 보자

코드
+0

다음 질문은 이제 덕분에, 어떻게 페이징 할 수 있습니까? –

관련 문제