更新activeCheckBox、Yii框架的值变化数据库

update database on value change of activeCheckBox, Yii framework

本文关键字:变化 数据库 框架 activeCheckBox Yii 更新      更新时间:2023-09-26

我有一个activeCheckBox上的表单,我想更新数据库,只要复选框的值被改变。我正在阅读关于activeecheckbox的CHTML类的文档,但我真的不明白从哪里开始。任何人都可以提供一个例子,如何设置activeecheckbox与ajax更新或任何链接的例子?

编辑
也许应该提一下,我刚刚开始使用Yii,对PHP和javascript几乎没有经验。

也许是这样的?

控制器中的AJAX动作:

public function actionCheckboxUpdate() {
  if(Yii::app()->request->isPostRequest)
  {
    if(isset($_POST['my_checkbox']))
    {
       // save value to DB
    }
  }
  else
    throw new CHttpException(400,
      Yii::t('app', 'Invalid request. Please do not repeat this request again.'));
}

Yii复选框:

<?php echo CHtml::checkbox('my_checkbox', false, array(
  'submit'=>'mycontroller/checkboxUpdate',
  'params'=> array('my_checkbox'=>'1')
)); ?>

根据你想要传递的参数,你可能需要变得更花哨,比如添加你自己的jQuery事件监听器,它将复选框的实际值发送给你的ajax动作,但我希望这能让你开始。

有关更多信息,请参阅文档中的html::checkBox(以及Yii用来简化AJAX的html::clientChange参数)。

下面是一些值得一读的文章:

  • http://www.yiiframework.com/forum/index.php?/topic/3337-activecheckbox-with-ajax/
  • http://www.yiiframework.com/forum/index.php?/topic/3110-ajax-and-sidebar
  • 使用ajax post复选框值

祝你好运!

像往常一样创建复选框:

<?php
  echo CHtml::checkbox('my-checkbox', false, array('id'=>'my-checkbox-id'));
然后创建一个jQuery事件监听器
<?php
  Yii::app()->clientScript->registerScript('my-event-listener',"
  $('#my-checkbox-id').change(function(){
      $.post(
          'controller/action',                 //url
          {                                    //data
               myval: $(this).is(':checked')
          },
          function(data){
               alert(data);                    //callback
          });
      });
  ");