Я пытаюсь использовать автозаполнение в поле тегов моей формы, используя Bootstrap Typeahead. Когда я сейчас набираю письмо, у меня появляется сообщение об ошибке в инструментах разработчика Chrome:
Uncaught TypeError: Cannot read property 'length' of undefined
Коротко моя форма:
<form class="form-horizontal" method="post" action="" autocomplete="off">
<!-- CSRF Token -->
.....
<!-- Tags -->
<div class="control-group {{ $errors->has('tag_id') ? 'error' : '' }}">
<label class="control-label" for="tags">Tags</label>
<div class="controls">
<input type="text" class="typeahead" data-provide="typeahead" autocomplete="off" >
{{ $errors->first('tag_id', '<span class="help-inline">:message</span>') }}
</div>
</div>
.....
</form>
Я использую префикс администратора в своих блогах:
Route::group(array('prefix' => 'admin'), function()
{
Route::get('/', array('as' => 'blogs', 'uses' => 'Controllers\Admin\BlogsController@getIndex'));
Route::get('create', array('as' => 'create/blog', 'uses' => 'Controllers\Admin\BlogsController@getCreate'));
Route::post('create', 'Controllers\Admin\BlogsController@postCreate');
Route::post('tags', 'Controllers\Admin\BlogsController@postTags');
}
мой контроллер:
public function postTags()
{
$query = Input::get('query');
$results = Tag::select( 'name' )->where( 'name', 'LIKE', '%' . $query . '%')->get();
$data = array();
// Loop through the results.
//
foreach ( $results as $result ):
$data[] = $result->name;
endforeach;
// Return a response.
//
return Response::json($data);
}
И я попытался активировать typehead
<script type="text/javascript">
$('.typeahead').typeahead({
source : function(typeahead, query){
$.ajax({
url : 'tags',
type : 'POST',
data : { query : query, column : 'name' },
dataType : 'json',
async : true,
success : function(data) {
return process(data.titles);
}
});
}
});
</script>
Как я могу исправить эту ошибку?
Спасибо.