2016-05-12 10 views
1

私は_form.phpにtextInputを持っています。それからselect2に変更します。しかし、私はそれを変更した後、検証は機能していません。どうしたの? select2で空白にすることはできません。 これはコードです:yii2でselect2を検証します。

_form.php

<?php 

     $formatJs = <<< 'JS' 
     var formatPenerima = function (penerima) { 
      if (penerima.loading) { 
       return penerima.text; 
      } 
      var markup = 
      '<div class="row">' + 
       '<div class="col-sm-4">' + 
        '<b style="margin-left:5px">' + penerima.text + '</b>' + 
       '</div>' + 
       '<div class="col-sm-3"><i class="fa fa-phone"></i> ' + penerima.telepon + '</div>' + 
       '<div class="col-sm-4"><i class="fa fa-envelope"></i> ' + penerima.mail + '</div>' + 
      '</div>'; 
      return '<div style="overflow:hidden;">' + markup + '</div>'; 
     }; 
     var formatPenerimaSelection = function (penerima) { 
      return penerima.id || penerima.text; 
     } 
JS; 

     // Register the formatting script 
     $this->registerJs($formatJs, \yii\web\View::POS_HEAD); 

     // Script to parse the results into the format expected by Select2 
     $resultsJs = <<< JS 
     function (data, params) { 
      params.page = params.page || 1; 
      return { 
       results: data.results, // check here 
       /*pagination: { 
        more: (params.page * 30) < data.total_count 
       }*/ 
      }; 
     } 
JS; 

     $url = Url::to(['/paket/jsonlist']); 

     // Render your widget 
     // Get data from dummy data 
     echo $form->field($model, 'no_induk')->widget(Select2::className(), [ 
      'name' => 'kv-repo-template', 
      'value' => '', 
      'initValueText' => '', 
      'options' => ['placeholder' => 'Cari pemilik ...', 'id' => 'pengambil'], 
      'pluginOptions' => [ 
       'allowClear' => true, 
       'minimumInputLength' => 1, 
       'ajax' => [ 
        'url' => $url, 
        'dataType' => 'json', 
        'delay' => 250, 
        'data' => new JsExpression('function(params) { return {q:params.term, page: params.page}; }'), 
        'processResults' => new JsExpression($resultsJs), 
        'cache' => true 
       ], 
       'escapeMarkup' => new JsExpression('function (markup) { return markup; }'), 
       'templateResult' => new JsExpression('formatPenerima'), 
       'templateSelection' => new JsExpression('formatPenerimaSelection'), 
      ], 
     ])->label('Pemilik'); 
    ?> 

、これが私のモデルルールです:あなたはオプションで クラス=> "フォームコントロール" を配置する必要があり

public function rules() 
    { 
     return [ 
      [['no_induk', 'nama', 'no_telepon', 'email', 'kategori_paket', 'nama_pengirim'/*, 'tanggal_sampai'*/], 
       'required', 'message' => '{attribute} tidak boleh kosong.'], 
      [['id_satpam_pengentry'], 'required', 'message' => 'Nama satpam tidak boleh kosong.'], 
      [['kategori_paket', 'status', 'id_satpam_pengentry', 'id_satpam_penyetuju'], 'integer'], 
      [['tanggal_sampai', 'tanggal_pengambilan'], 'safe'], 
      [['no_induk', 'email'], 'string', 'max' => 255], 
      [['nama', 'nama_pengirim', 'nama_pengambil'], 'string', 'max' => 128], 
      [['no_telepon'], 'string', 'max' => 64] 
     ]; 
    } 
+0

select2コードとモデルを共有できますかルール? –

+0

もちろん。私は私の質問にそれを共有します。 – RiefSapthana

+0

他のフィールドの検証を実行できましたか?クライアント側の検証とサーバー側が 'no_induk'で動作していませんか? –

答えて

0

idを削除すると、有効性が確認されます

+0

実装方法は?私に例を挙げて、私もあなたの説明にしたい.. – CrashBurn

0
echo $form->field($model, 'no_induk')->widget(Select2::className(), [ 
     'name' => 'kv-repo-template', 
     'value' => '', 
     'initValueText' => '', 
     'options' => ['placeholder' => 'Cari pemilik ...', 'class' => 'form-control'], 
     'pluginOptions' => [ 
      'allowClear' => true, 
      'minimumInputLength' => 1, 
      'ajax' => [ 
       'url' => $url, 
       'dataType' => 'json', 
       'delay' => 250, 
       'data' => new JsExpression('function(params) { return {q:params.term, page: params.page}; }'), 
       'processResults' => new JsExpression($resultsJs), 
       'cache' => true 
      ], 
      'escapeMarkup' => new JsExpression('function (markup) { return markup; }'), 
      'templateResult' => new JsExpression('formatPenerima'), 
      'templateSelection' => new JsExpression('formatPenerimaSelection'), 
     ], 
    ])->label('Pemilik'); 
関連する問題