2017-03-28 8 views
0

私はdatabase true/falseフィールド(field1)に関連するswitchinput Kartikウィジェットを使用しています。私がしたいのは、スイッチを変更するときに、このデータベースのフィールド値を更新できるようにすることです。ここYii2 - switchinputウィジェットがクリックされたときのデータベースフィールドの更新

は、ビューコードである:

<?php 
    echo $form->field($model, 'field1')->widget(SwitchInput::classname(), [ 
    'type' => SwitchInput::CHECKBOX, 
    'name' => 'status_11', 
    'pluginOptions' => [ 
     'size' => 'medium', 
     'onColor' => 'success', 
     'offColor' => 'danger', 
     'handleWidth'=>80, 
     'onText'=>'ACTIVE', 
     'offText'=>'INACTIVE' 
    ] 
     ]); 
?> 

、ここでは、データベースを更新しようとコントローラコードである:

.................  
if (isset($_POST['status_11'])) 
        { 
         if ($model->field1 == False) 
         { 
          $model->field1 = True; 
         } 
         else 
         { 
          $model->field1 = False; 
         } 
        } 
        if(!$model->save()) 
        { 
         throw new Exception('Could not save to database. Trnasaction aborted.'); 
        } 
.................. 

スイッチがデータベースからFIELD1とショーの値を読み取ることができそれぞれオンまたはオフになります。しかし、変更(onclick)アクションはデータベースを更新しません...

私はPHPを使ってみるべきでしょうか、それともjs( 'pluginEvents'ウィジェットオプション)を使って実装するべきですか? ご意見をいただければ幸いです。前もって感謝します。

答えて

2

あなたがデータベースを更新し、あなたのPHPスクリプトにAJAX呼び出しをトリガーするために、switchChangeイベントにpluginEvents配列を使用する必要があります。

pluginEvents = [ 
    "switchChange.bootstrapSwitch" => 'function() { 
     $.ajax({ 
      method: "POST", 
      url: "'.Url::to(['/controller/action']).'", 
      data: { status_11: state} 
     }) 
    }', 
]; 
+0

は答えてくれてありがとう! urlプロパティに[controller/action]参​​照を入れることは許されますか? – YorKal

+0

はい。私はその解決策を更新しました – gmc

関連する問題