2017-06-06 15 views
2

おはようございます、私は選択されたオプション(ajaxリクエストを介して取得)をjQuery select2(複数選択)に設定しようとしている間に立ち往生しています。私がコントロールを使用する場合、マルチ選択はうまく動作します。前に保存したモデルを編集する必要があるときに、前に選択したオプションのいずれも表示されないため、問題が発生します。laravel jquery select2 multiselect - 選択した要素を初期化する

これが私の見解です:

<div class="form-group {{ $errors->has('pubblicazione_giuridica_id') ? 'has-error' : ''}}"> 
    {!! Form::label('pubblicazione_giuridica_id', 'Law Pubs', ['class' => 'col-sm-3 control-label']) !!} 
    <div class="col-sm-6"> 
     {!! Form::select('pubblicazione_giuridica_id[]', [$pubGiurList], null, ['class' => 'form-control', 'id'=>'select-pgiur', 'multiple'=>'multiple']) !!} 
     {!! $errors->first('pubblicazione_giuridica_id', '<p class="help-block">:message</p>') !!} 
    </div> 

のjavascript:

$('#select-pgiur').select2({ 
    ajax: { 
     url: "{!! URL::to('/gare/proc-getpubgiur') !!}", 
     dataType: 'json', 
     delay: 150, 
     data: function (params) { 
      return { q: params.term, }; 
     }, 
     processResults: function (data, params) { 
      return { results: data.items, }; 
     }, 
     cache: true 
    }, 
    language: 'it', 
    theme: "bootstrap", 
    placeholder: "Choose an option." 
}); 

コントローラー:

public function edit($id, Request $request) { 
    $procedure = $this->getProcedure($id, $request, true); 
    if (!$procedure) { 
     return redirect('gare/procedure')->with('alert-warning', 'Gara non trovata - Operazione non consentita'); 
    } 
    return view('gare.procedures.edit', [ 'procedure'=>$procedure, 'opChoiceList'=>$this->getOpChoiceList(), 'pubGiurList'=>json_encode(GaraPubblicazioneGiuridica::GetPubByGaraId($procedure->id)) ]); 
} 

モデル:

public static function GetPubByGaraId($id){ 
    //TODO: visualizzare le selected publications 
    $procagg = GaraPubblicazioneGiuridica::where('gara_id','=',$id)->select('id')->get(); 
    if($procagg){ 
     $plucked = $procagg->pluck('nome'); 
     $toReturn = array(); 
     foreach($plucked as $key=>$value){ 
      $toReturn[$key]=$value; 
     } 
     return $toReturn; 
    } 
    return ""; 
} 

これについていくつか光を当てることができますか? ありがとうございます。

答えて

0

J-queryイベントでajax呼び出しを呼び出し、idを通じてデータをバインドできます。

$( "#select-pgiur").val(data.items).trigger( "change");

は、Selectセレクトがデータを使用して初期化された後に、それは私が正しくあなたのエンドの目標を理解していれば、あなたはSelectセレクトオプションを選択することにより、複数選択を更新したい.....

0

をお手伝いしていますかもしれませAjaxリクエストから受け取ったものです。

この場合、.trigger('change')イベントが必要です。

は、私が個人的にVueJSと手作りのフォームを使用しますが、これは正しい方向にあなたを指している必要があります。選択したい<option value="1"></option>

$("#your_select2_id").val(selected_values_array).trigger("change"); 

selected_values_arrayに値が含まれているJS配列です。 .trigger()は、それを表示するようにSelect2を更新します。

希望に役立ちます!

0

ドロップダウンセレクタを作成するときは、最初に選択したオプションを指定することができます

Form::select(
    'pubblicazione_giuridica_id[]', 
    [$pubGiurList], 
    $opChoiceList, 
    ['class' => 'form-control', 'id'=>'select-pgiur', 'multiple'=>'multiple'] 
) 

をしかし、これはあなたが最初に選択したオプションで事前移入あなたのAJAXのSELECT2ドロップダウンする必要があるということです。

関連する問題