我在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。很简单,也很不错。