обновить базу данных при изменении значения activeCheckBox, Yii framework - PullRequest
0 голосов
/ 08 апреля 2011

У меня есть activeCheckBox в форме, и я хочу обновить базу данных, как только значение флажка будет изменено. Я читал документацию по классу CHTML для activeCheckBox, но я не совсем понимаю, с чего начать. Кто-нибудь может привести пример того, как настроить activeCheckBox с обновлением ajax, или ссылки на примеры?

Редактировать
Вероятно, следует упомянуть, что я только начал работать с Yii и имею небольшой опыт работы с PHP и javascript.

Ответы [ 2 ]

2 голосов
/ 08 апреля 2011

Что-то вроде этого возможно?

Действие 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, но я надеюсь, что это поможет вам начать.

Для получения дополнительной информации см. Документацию для CHtml :: checkBox (и параметров CHtml :: clientChange , которые Yii использует для упрощения AJAX).

Вот еще несколько статей, которые было бы неплохо прочитать:

Удачи!

0 голосов
/ 09 апреля 2011

Создайте свой флажок как обычно:

<?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
          });
      });
  ");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...