使用Laravel 4进行Typeahead遥控 - 我认为个别作品可以工作但不能一起工作

时间:2014-01-02 16:08:03

标签: php laravel-4 typeahead.js

我对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);
}

当我在表单中输入一些文字时,我确实看到了浏览器请求: enter image description here

如果我直接导​​航到远程网址,我确实会看到我的var_dump

E.g。 /recipe/create/s告诉我

array(4) {
    [0] "Sugar"
    [1] "Cheese"
    [2] "Salt"
    [3] "rasins"
}

我显然遗漏了一些东西,我怀疑它很简单,尽管我也可能错了。当我开始在表单字段中输入时,没有下拉列表。

我认为我的控制器方法在打字时从未被调用过,或者我会在每个浏览器请求中看到var_dump,对吗?

如果是这种情况,我是否在脚本的remote:位处断开了?


修改

enter image description here

3 个答案:

答案 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);