/** * main function called to update column in database * */ public function update() { //set params from request $this->primaryKey = yii::app()->request->getParam('pk'); $this->attribute = yii::app()->request->getParam('name'); $value = Yii::app()->request->getParam('value'); //checking params if (empty($this->attribute)) { throw new CException(Yii::t('zii', 'Property "attribute" should be defined.')); } if (empty($this->primaryKey)) { throw new CException(Yii::t('zii', 'Property "primaryKey" should be defined.')); } //loading model $this->model = CActiveRecord::model($this->modelClass)->findByPk($this->primaryKey); if (!$this->model) { throw new CException(Yii::t('editable', 'Model {class} not found by primary key "{pk}"', array('{class}' => get_class($this->model), '{pk}' => $this->primaryKey))); } $this->model->setScenario($this->scenario); //is attribute exists if (!$this->model->hasAttribute($this->attribute)) { throw new CException(Yii::t('editable', 'Model {class} does not have attribute "{attr}"', array('{class}' => get_class($this->model), '{attr}' => $this->attribute))); } //is attribute safe if (!$this->model->isAttributeSafe($this->attribute)) { throw new CException(Yii::t('zii', 'Model {class} rules do not allow to update attribute "{attr}"', array('{class}' => get_class($this->model), '{attr}' => $this->attribute))); } //setting new value $this->setAttribute($this->attribute, $value); //validate $this->model->validate(array($this->attribute)); if ($this->model->hasErrors()) { $this->error($this->model->getError($this->attribute)); } //save if ($this->beforeUpdate()) { //saving (only chnaged attributes) if ($this->model->save(false, $this->changedAttributes)) { $this->afterUpdate(); } else { $this->error(Yii::t('zii', 'Error while saving record!')); } } else { $firstError = reset($this->model->getErrors()); $this->error($firstError[0]); } }
public static function textInputFull(CActiveRecord $model, $fieldName, $options = array()) { $containerCss = ''; $options['class'] = 'form-control'; if (array_key_exists('inputClass', $options)) { $options['class'] .= " {$options['inputClass']}"; unset($options['inputClass']); } if (array_key_exists('fieldColumn', $options)) { $columns = $options['fieldColumn']; unset($options['fieldColumn']); } else { $columns = self::$fullColumn; } $errorHelp = ''; if ($model->hasErrors($fieldName)) { $containerCss .= ' has-error'; $errorHelp = '<span class="help-block">' . $model->getError($fieldName) . '</span>'; } $str = "<div class=\"form-group{$containerCss}\">"; if (array_key_exists('hasLabel', $options)) { $str .= '<div class="input-caption col-md-' . $columns . '">' . CHtml::activeLabelEx($model, $fieldName, array('class' => 'control-label')) . '</div>'; unset($options['hasLabel']); } $str .= "<div class=\"col-md-{$columns}\">" . CHtml::activeTextField($model, $fieldName, $options) . "{$errorHelp}</div></div>"; return $str; }