【问题标题】:Yii/Bootstrap OnClick Execute MySQL QueryYii/Bootstrap OnClick 执行 MySQL 查询
【发布时间】:2016-06-16 19:35:28
【问题描述】:

我正在使用 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,
    )
);

这是我在控制器中的按钮创建功能:

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

这一切都完美无缺,但我试图让按钮在按下按钮时执行 MySQL 更新命令,我没有运气弄清楚我可以设置什么属性来做到这一点。我可以添加什么到 activateButton() 以使其在按下时执行查询?

【问题讨论】:

  • 发出 ajax 请求 onclick 并在服务器端执行您的查询。
  • 由于按钮是动态创建的且数量不确定,我将如何编写代码以便知道按下了哪个按钮?

标签: php mysql twitter-bootstrap mysqli yii


【解决方案1】:

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

非常简单和漂亮。

【讨论】:

    猜你喜欢
    • 2013-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-13
    • 1970-01-01
    • 2014-08-05
    • 1970-01-01
    • 2014-03-04
    相关资源
    最近更新 更多