我在Bootstrap中使用Yii。

我正在建立一个充满数据的表,如下所示:

$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()中添加什么以使其在印刷机上执行查询?

最佳答案

首先,您应该将类​​和项目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。

很简单,也很不错。

10-08 08:39
查看更多