Я относительно зеленый с Laravel и PHP. Я изучаю Laravel посредством документации и SO / Google. Я нажал на каждый вопрос типа «голова / ларавел», который мог найти здесь, и я просто не могу найти пример, который вполне подходит. Этот вопрос очень близок. На самом деле я не вижу вопиющих различий. Но опять же, у этого 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); }
Когда я ввожу какой-либо текст в форму, я вижу запрос браузера:
Если я перейду непосредственно к удаленному URL-адресу, я вижу свой var_dump
как и следовало ожидать:
Например /recipe/create/s
показывает мне
array(4) { [0] "Sugar" [1] "Cheese" [2] "Salt" [3] "rasins" }
Я явно что-то пропустил, и у меня есть подозрение, что это просто, хотя я тоже ошибаюсь. Когда я начинаю печатать в поле формы, выпадающего списка нет.
Я думаю, что мой метод контроллера никогда не вызывается при наборе текста, или я бы видел var_dump
с каждым запросом браузера, правильно?
Если это так, я сломался на remote:
бит скрипта?
РЕДАКТИРОВАТЬ
Попробуйте вывести var_dump
из контроллера – typeahead ожидает действительный JSON в качестве ответа.
Это будет работать и проверяться:
$data = array(); $results = Student::select ('id')->where('id', 'LIKE',$query . '%')->get(); foreach ($results as $result): $data[] = $result->id.""; endforeach; return Response::json($data);
Кстати, вы могли бы сделать
$results = Ingredient::select ('name')->where('name', 'LIKE', '%' . $query . '%')-> return Response::json($results);