2016-08-16 17 views
1

私はlaravelで検索機能を作ろうとしています。しかし、それは表示されます。Laravelの検索機能

"未定義の変数:q" を

私は、変数を定義しても。私は間違いを犯した手がかりを得ていません。私はそれについて助けが必要です。ここで

は私のコントローラのコードである:ここで

public function postSearch(Request $request) 
{ 
     $q = $request->input('q'); 
    $products = DB::table('products') 
         ->join('product_categories', function ($join) { 
          $join->on('category_id', '=', 'product_categories.id') 
           ->where('name','LIKE','%'.$q.'%')->orWhere('category_name','LIKE','%'.$q.'%'); 
          })->get(); 
    if(count($products) > 0) 
     return view('search')->withDetails($products)->withQuery ($q); 
    else return view ('search')->withMessage('No Details found. Try to search again !'); 
} 

は私のルートである:ここ

Route::post('/search',[ 
    'uses' => '[email protected]', 
    'as' => 'search' 
]);` 

は私のビュー形式である:

<form action="{{ route('search') }}" method="post" role="search"> 
    {{ csrf_field() }} 
    <div class="input-group"> 
     <input type="text" class="form-control" name="q" placeholder="Search products"> 
     <span class="glyphicon glyphicon-search"></span> 
      <button type="submit" class="btn-btn-primary">Submit</button> 
     </span> 
    </div> 
</form> 

答えて

1

を変更し、次のコード:

->join('product_categories', function ($join) { 
このコードへ

->join('product_categories', function ($join) use ($q) { 

注:あなたがそれを渡すために、変数を宣言する前に、あなたはその中に外部変数を使用することはできません。

+0

ありがとうございます。 –