我正在使用 Yii 和 Bootstrap。
我正在设置一个充满数据的表,如下所示:
$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,
)
);
这是我在 Controller 中的按钮创建函数:
public function activateButton($data, $row)
{
$this->widget('bootstrap.widgets.TbButtonGroup', array(
'size'=>'small',
'type'=>'inverse',
'buttons'=>array(
array('label'=>'Deactivate',
)
)
));
}
这一切都工作得很好,但我试图让按钮在按下按钮时执行 MySQL 更新命令,但我没有运气弄清楚我可以设置什么属性来执行此操作。我可以向 activateButton() 添加什么以使其在按下时执行查询?
最佳答案
首先,您应该将类和项目 ID 添加到您的 getter 中:
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。
非常简单又漂亮。
关于php - Yii/Bootstrap OnClick 执行 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37867967/