我对Laravel和PHP比较绿。我正在通过文档和SO / Google学习Laravel。我点击了我在这里可以找到的每个类型/ laravel问题,我似乎无法找到一个非常合适的例子。 This question非常接近。我实际上没有看到任何明显的差异。但话说回来,OP也遇到了远程问题。
我觉得我很亲密,因为我的各种作品似乎都在单独运作。让我解释一下......
我有一张表格......
<div class="input-group form-group" id="ingredients">
{{ Form::label('ingredients', 'Ingredients') }}
{{ Form::text('ingredients[]', null, array(
'class' => 'form-control typeahead',
'data-provide' => 'typeahead',
'data-items' => '10',
'id' => 'ingredients')
) }}
</div>
...用脚本......
<script>
$('.typeahead').typeahead([
{
name: 'ingredients',
remote: '/recipe/create/%QUERY'
}
]);
</script>
remote:
指向此路线
Route::get('recipe/create/{query}', 'SearchController@searchIngredients');
这指向这种控制器方法...
public function searchIngredients($query)
{
$data = array();
$results = Ingredient::select ('name')->where('name', 'LIKE', '%' . $query . '%')->get();
foreach ($results as $result) :
$data[] = $result->name;
endforeach;
var_dump($data);
return Response::json($data);
}
当我在表单中输入一些文字时,我确实看到了浏览器请求:
如果我直接导航到远程网址,我确实会看到我的var_dump
:
E.g。 /recipe/create/s
告诉我
array(4) {
[0] "Sugar"
[1] "Cheese"
[2] "Salt"
[3] "rasins"
}
我显然遗漏了一些东西,我怀疑它很简单,尽管我也可能错了。当我开始在表单字段中输入时,没有下拉列表。
我认为我的控制器方法在打字时从未被调用过,或者我会在每个浏览器请求中看到var_dump
,对吗?
如果是这种情况,我是否在脚本的remote:
位处断开了?
修改
答案 0 :(得分:3)
尝试从控制器中取出var_dump
- typeahead期待有效的JSON作为响应。
答案 1 :(得分:1)
这将起作用并经过测试:
$data = array();
$results = Student::select ('id')->where('id', 'LIKE',$query . '%')->get();
foreach ($results as $result):
$data[] = $result->id."";
endforeach;
return Response::json($data);
答案 2 :(得分:0)
顺便说一句,你可以做到
$results = Ingredient::select ('name')->where('name', 'LIKE', '%' . $query . '%')->
return Response::json($results);