2016-06-16 5 views
0

私はブートストラップでYiiを使用しています。Yii/Bootstrap OnClick MySQLクエリを実行する

私はこのようなデータの完全なテーブルを設定してい:

$table_contents = array(
     ... irrelevant data... 
     array(
      'name'=>'Action', 
      'value'=>array($this, 'activateButton'), 
      )  
     ); 

は、テーブルの作成:

$this->widget($table_view, array(
    'type'=>$table_type, 
    'dataProvider'=>new CArrayDataProvider($prod_array), 
    'columns'=>$table_contents, 
    ) 
); 

そしてここでは、私のボタン作成機能はコントローラである:

public function activateButton($data, $row) 
{  
    $this->widget('bootstrap.widgets.TbButtonGroup', array(
     'size'=>'small', 
     'type'=>'inverse', 
     'buttons'=>array(
      array('label'=>'Deactivate', 
      ) 
     ) 
    )); 
} 

これは完全に機能しますが、私はボタンを押してMySQLの更新コマンドを実行しようとしていますが、トンが押されて、私はそれをするために設定することができるプロパティを考え出すことは何も運んでいないよ。 activateButton()に何を追加して、pressでクエリを実行できるようにすることができますか?

+0

ajaxリクエストonclickを作成し、サーバー側でクエリを実行します。 – ineersa

+0

ボタンが動的に作成され、番号が不定であるため、どのボタンを押してどのボタンを押したのかわかりますか? –

答えて

0

まず、あなたのゲッターにクラスとアイテムIDを追加する必要があります

public function activateButton($data, $row) 
{  
    $this->widget('bootstrap.widgets.TbButtonGroup', array(
     'size'=>'small', 
     'type'=>'inverse', 
     'buttons'=>array(
      array(
       'label'=>'Deactivate', 
       'htmlOptions'=>array('class'=>'my-ajax-button','data-id'=>$this->id) 
      ) 
     ) 
    )); 
} 

私はドキュメントを見て、そのウィジェットで適切にクラスを追加するかどうかはわかりません。

その後、あなたはAJAX呼び出しを作るためにあなたのページにスクリプトを追加することができます

$url = $this->createUrl('your/ajax/url'); 
Yii::app()->clientScript->registerScript('initStatus', 
    "$('.my-ajax-button').on('click','body',function() { 
     el = $(this); 
     $.post('$url', {id: el.data('id')}, yourJsCallback(data)); 
    });", 
    CClientScript::POS_READY 
); 

あなたは$_POST['id']にレコードIDを取得します。

かなりシンプルで素敵です。

関連する問題