複数選択検索フィルターに select2 を実装することに決めました。
私は次の方法を持っています:
public function getContactByName($name)
{
return Contact::select(array('id', DB::raw('concat(first_name," ",last_name) as name')))->where(DB::raw('concat(first_name," ",last_name)'), 'like', "%$name%")->get();
}
このメソッドは、'first_name' と 'last_name' が URL に入力された用語に似ているレコードを返します (例: http://www.example.com/admin/get-contact-name/ {name})。
次のルートがリクエストを処理します。
Route::get('admin/get-contact-name/{name}', 'AdminContactListController@getContactByName');
これはすべてうまくいきます。select2 と AJAX を使用してセットアップするための助けが必要です。JS のオプションに何を入れればよいかよくわかりません。
次のフォーム フィールドの設定があります。
<input name="contact_names_value" type="text" class="input-medium contact_names_value" id="contact_names_value">
誰でも私を正しい方向に向けることができますか?乾杯。
編集:ページなど、これらの各要素の意味がわからないため、ここで遊んで暗闇の中で撮影していますが、これは私がこれまでに持っているコードであり、機能していないと言うだけで十分です:
var name = $('#contact_names_value').val();
$('#contact_names_value').select2({
placeholder: 'Search contacts',
minimumInputLength: 3,
ajax: {
url: '/admin/get-contact-name' + name,
dataType: 'json',
data: function (term, page) {
return {
q: term,
page_limit: 10
};
},
results: function (data, page) {
return {results: data};
}
},
});
編集: わかりました、私はずっと近づいていると思います。現在、select2 を介して結果を取得していると思いますが、JavaScript エラーが発生しています。これが私がこれまでに持っているものです。
方法:
public function getContactByName()
{
$name = Input::get('name');
return Contact::select(array('id', DB::raw('concat(first_name," ",last_name) as name')))->where(DB::raw('concat(first_name," ",last_name)'), 'like', "%$name%")->get();
}
ルート:
Route::get('admin/get-contact', 'AdminContactListController@getContactByName');
Select2 JavaScript:
$('#contact_names_value').select2({
name: $('.select2-input').val(),
placeholder: 'Search contacts',
minimumInputLength: 3,
ajax: {
url: '/admin/get-contact' + name,
dataType: 'json',
data: function (term) {
return {
name: term
};
},
results: function (data) {
return {results: data};
},
dropdownCssClass: 'bigdrop'
},
});
Select2 JS エラー:
Uncaught TypeError: Cannot call method 'toUpperCase' of undefined plugins.js:1549
C plugins.js:1549
a.fn.select2.defaults.formatResult plugins.js:1550
g plugins.js:1549
a.extend.populateResults plugins.js:1549
f.query.callback plugins.js:1549
(anonymous function) plugins.js:1549
a.extend.success plugins.js:1549
c jquery-1.9.1.min.js:3
p.fireWith jquery-1.9.1.min.js:3
k jquery-1.9.1.min.js:5
r
アドバイスはありますか?