2016-11-03 7 views
1

私はLaravel 5.2を使用しています。ここlaravel auto completeテキスト表示

は私が手動でここにjson viewとして言うリンク{{URL ::ルート( '自動')}}参照するときに今の問題は私のコード

//for header 
     <head> 
     <script type="text/javascript" src="{{ URL::asset('src/js/jquery-1.10.2.js') }}"></script> 
      <script type="text/javascript" src="{{ URL::asset('src/js/jquery-ui.js') }}"></script> 
      <link rel="stylesheet" href="{{ URL::to('src/css/jquery-ui.css') }}"> 
     </head> 

//body 

<div class="col-sm-6 feature" > 
     <div class="ui-widget"> 
      <label for="skills">Skills: </label> 
      <input type="text" class="search_keyword" id="skills" placeholder="Search.." name="skills" /> 
     </div> 
     <script> 
      $(function() { 
       $("#skills").autocomplete({ 
        source: "{{URL::route('auto')}}" 
        //source: ["a","b"] 
       }); 
      }); 
     </script> 
    </div><!-- end feature --> 

//route 

Route::get('/', function() { 
    return view('welcome'); 
}); 

Route::get('/auto', [ 
    'uses' => '[email protected]', 
    'as' => 'auto' 
    ]); 


//controller 

class SearchController extends Controller 
{ 

public function AutoSug() 
    { 
     $auto_s = DB::table('skills') 
       ->pluck('skill'); 

     return response()->json($auto_s); 

    } 

} 

です

ここに表示されるように問題はありません。 main view

しかし、コード「{{URL :: route( 'auto')}}」をソース:["a"、 "b"]に変更します。正常に出力されます。それでどこが問題だろうか?

答えて

1

ここに解決策があります。 JavaScriptが

コントローラの

$(function() 
     { 
      $("#q").autocomplete({ 
      source: "{{URL('auto')}}", 
      minLength: 1, 
      select: function(event, ui) { 
      $("#q").val(ui.item.value); 
      }  
      }); 
     }); 

を次のように書いてください

namespace App\Http\Controllers; 

    use Illuminate\Http\Request; 
    use App\Http\Controllers\Controller; 
    use Illuminate\Support\Facades\Input; 
    use App\Product; 
    use DB; 

    class SearchController extends Controller 
    { 

    public function autoComplete() 
     { 

      $term = Input::get('term'); 

      $results = array(); 

      $queries = DB::table('skills') 
      ->where('skill', 'LIKE', '%'.$term.'%') 
      ->take(9)->get(); 

     foreach ($queries as $query) 
     { 
      $results[] = [ 'id' => $query->ID, 'value' => $query->skill]; 
     } 


     return response()->json($results); 
     } 

    } 

問題は、それがGET変数およびクエリビルダにnull値はすべて返却してきたコントローラにあったが、次のように追加してくださいデータベースからの結果。ライブラリを追加し、変数を次のように関連付けて問題を解決しました。

use Illuminate\Support\Facades\Input; 
$term = Input::get('term'); 

他の人が同じ問題を起こすのを助けてくれることを願っています。

以下のリンクが役立つことを願っています。

  1. https://gist.github.com/imranismail/10200241?signup=true

  2. https://gist.github.com/manoj-nandakumar/11beb90916dfbdc6af7a

関連する問題