2015-10-04 28 views
2

當我搜索一個subreddit(類別)並將其提交給數據庫時,其他一切正常,沒有問題。Laravel 5:jQuery Typeahead在頁面加載時提供錯誤狀態500(缺少參數)

但是,當我第一次加載頁面post/create,我得到STATUS 500這條路線http://localhost/reddit/public/data/subreddits

上,我不知道我做錯考慮到它的工作原理。

路線

Route::get('data/subreddits', '[email protected]'); 
Route::get('data/subreddits/{QUERY}', '[email protected]'); 

PostsController.php

public function create() 
{ 
    $subreddits = Subreddit::lists('name', 'id')->toArray(); 

    return view('post/create')->with('subreddits', $subreddits); 
} 

public function getSubreddits($query) { 
     $results = Subreddit::select('id', 'name')->where('name', 'LIKE', '%' . $query . '%')->get(); 
     return Response::json($results); 
} 

Javascript語言,create.blade.php

<script type="text/javascript"> 
     $(document).ready(function() { 
      var subreddits = new Bloodhound({ 
       datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'), 
       queryTokenizer: Bloodhound.tokenizers.whitespace, 
       prefetch: 'http://localhost/reddit/public/data/subreddits', 
       remote: { 
        url: 'http://localhost/reddit/public/data/subreddits/%QUERY', 
        wildcard: '%QUERY' 
       } 
      }); 

      $('#remote .typeahead').typeahead(null, { 
       name: 'name', 
       display: 'name', 
       source: subreddits 
      }); 

      $('#remote .typeahead').bind('typeahead:select', function(ev, suggestion) { 
       $('.subreddit_id').val(suggestion.id); 
      }); 
     }); 
    </script> 

錯誤

缺少參數1爲App \ HTTP \控制器\ PostsController :: getSubreddits()

+0

什麼是錯誤信息? – mimo

+0

它現在給我一個新的錯誤'應用程序\ Http \ Controllers \ PostsController :: getSubreddits()缺少參數1' – Halnex

回答

1

由於@ mimo已回答您需要將您的query設爲可選參數。

Route::get('data/subreddits/{query?}', '[email protected]'); 

還需要一個默認值傳遞給你的query參數getSubreddits

public function getSubreddits($query = '') { 
    $results = Subreddit::select('id', 'name')->where('name', 'LIKE', '%' . $query . '%')->get(); 
    return Response::json($results); 
} 

而且如果只有如果沒有查詢參數傳遞就可以發送的所有數據結果很少。

public function getSubreddits($query = '') { 
    $q = Subreddit::select('id', 'name') 
    if ($query) { 
     $q->where('name', 'LIKE', '%' . $query . '%'); 
    } 
    return Response::json($q->get()); 
} 
+0

輝煌,感謝的人。有用。我想我誤解了@mimo - 並且我仍然需要'$ query'參數的默認值。我也刪除了重複路線。 – Halnex

0

你的第一條路線沒有參數,但你調用一個需要的功能。如果刪除該行,則應刪除該錯誤。

Route::get('data/subreddits/{QUERY?}', '[email protected]'); 

即使沒有查詢,也會調用函數。

+0

刪除該路由後,我仍然收到相同的錯誤。 – Halnex

+0

然後請發佈你的route.php文件和你的'getSubreddits'函數。 – mimo

+0

我在我原來的文章中發佈了代碼,只是看看它。 – Halnex