131 public $method=
'post';
135 public $stateful=
false;
140 public $errorMessageCssClass=
'errorMessage';
144 public $htmlOptions=array();
224 public $clientOptions=array();
229 public $enableAjaxValidation=
false;
230 public $disableAjaxValidationAttributes = array();
232 private $_attributes=array();
241 $this->htmlOptions[
'id']=$this->id;
243 echo CHtml::statefulForm($this->action, $this->method, $this->htmlOptions);
245 echo CHtml::beginForm($this->action, $this->method, $this->htmlOptions);
254 echo CHtml::endForm();
255 if(!$this->enableAjaxValidation || empty($this->_attributes))
257 $options=$this->clientOptions;
258 if(isset($this->clientOptions[
'validationUrl']) && is_array($this->clientOptions[
'validationUrl']))
259 $options[
'validationUrl']=CHtml::normalizeUrl($this->clientOptions[
'validationUrl']);
260 $options[
'attributes']=array();
261 foreach ($this->_attributes as $attr=>$item) {
262 if (in_array($attr,$this->disableAjaxValidationAttributes)===
false) {
264 array_push($options[
'attributes'],$item);
267 if($this->_summary!==null)
268 $options[
'summaryID']=$this->_summary;
270 $options=CJavaScript::encode($options);
271 Yii::app()->clientScript->registerCoreScript(
'yiiactiveform');
273 Yii::app()->clientScript->registerScript(__CLASS__.
'#'.$id,
"\$('#$id').yiiactiveform($options);");
305 public function error($model,$attribute,$htmlOptions=array(),$enableAjaxValidation=
true)
307 if(!$this->enableAjaxValidation || !$enableAjaxValidation)
310 $inputID=isset($htmlOptions[
'inputID']) ? $htmlOptions[
'inputID'] : CHtml::activeId($model,$attribute);
311 unset($htmlOptions[
'inputID']);
312 if(!isset($htmlOptions[
'id']))
313 $htmlOptions[
'id']=$inputID.
'_em_';
315 $option=array(
'inputID'=>$inputID,
'errorID'=>$htmlOptions[
'id']);
325 'validatingCssClass',
326 'beforeValidateAttribute',
327 'afterValidateAttribute',
329 foreach($optionNames as $name)
331 if(isset($htmlOptions[$name]))
333 $option[$name]=$htmlOptions[$name];
334 unset($htmlOptions[$name]);
337 if($model instanceof CActiveRecord && !$model->isNewRecord)
340 if(!isset($htmlOptions[
'class']))
341 $htmlOptions[
'class']=$this->errorMessageCssClass;
345 if(isset($htmlOptions[
'style']))
346 $htmlOptions[
'style']=rtrim($htmlOptions[
'style'],
';').
';display:none';
348 $htmlOptions[
'style']=
'display:none';
349 $html=CHtml::tag(
'div',$htmlOptions,
'');
352 $this->_attributes[$inputID]=$option;
368 public function errorSummary($models,$header=null,$footer=null,$htmlOptions=array())
370 if(!$this->enableAjaxValidation)
373 if(!isset($htmlOptions[
'id']))
374 $htmlOptions[
'id']=$this->
id.
'_es_';
379 $header=
'<p>'.Yii::t(
'yii',
'Please fix the following input errors:').
'</p>';
380 if(!isset($htmlOptions[
'class']))
381 $htmlOptions[
'class']=CHtml::$errorSummaryCss;
382 $htmlOptions[
'style']=isset($htmlOptions[
'style']) ? rtrim($htmlOptions[
'style'],
';').
';display:none' :
'display:none';
383 $html=CHtml::tag(
'div',$htmlOptions,$header.
"\n<ul><li>dummy</li></ul>".$footer);
386 $this->_summary=$htmlOptions[
'id'];
396 public function label($model,$attribute,$htmlOptions=array())
398 return CHtml::activeLabel($model,$attribute,$htmlOptions);
407 public function labelEx($model,$attribute,$htmlOptions=array())
409 return CHtml::activeLabelEx($model,$attribute,$htmlOptions);
418 public function textField($model,$attribute,$htmlOptions=array())
420 return CHtml::activeTextField($model,$attribute,$htmlOptions);
429 public function hiddenField($model,$attribute,$htmlOptions=array())
431 return CHtml::activeHiddenField($model,$attribute,$htmlOptions);
442 return CHtml::activePasswordField($model,$attribute,$htmlOptions);
451 public function textArea($model,$attribute,$htmlOptions=array())
453 return CHtml::activeTextArea($model,$attribute,$htmlOptions);
462 public function fileField($model,$attribute,$htmlOptions=array())
464 return CHtml::activeFileField($model,$attribute,$htmlOptions);
473 public function radioButton($model,$attribute,$htmlOptions=array())
475 return CHtml::activeRadioButton($model,$attribute,$htmlOptions);
484 public function checkBox($model,$attribute,$htmlOptions=array())
486 return CHtml::activeCheckBox($model,$attribute,$htmlOptions);
495 public function dropDownList($model,$attribute,$data,$htmlOptions=array())
497 return CHtml::activeDropDownList($model,$attribute,$data,$htmlOptions);
506 public function listBox($model,$attribute,$data,$htmlOptions=array())
508 return CHtml::activeListBox($model,$attribute,$data,$htmlOptions);
517 public function checkBoxList($model,$attribute,$data,$htmlOptions=array())
519 return CHtml::activeCheckBoxList($model,$attribute,$data,$htmlOptions);
530 return CHtml::activeRadioButtonList($model,$attribute,$data,$htmlOptions);
545 public static function validate($models, $attributes=null, $loadInput=
true)
548 if(!is_array($models))
549 $models=array($models);
550 foreach($models as $model)
552 if($loadInput && isset($_POST[get_class($model)]))
553 $model->attributes=$_POST[get_class($model)];
554 $model->validate($attributes);
555 foreach($model->getErrors() as $attribute=>$errors)
556 $result[CHtml::activeId($model,$attribute)]=$errors;
558 return function_exists(
'json_encode') ? json_encode($result) : CJSON::encode($result);