/** * Displays the first validation error for a model attribute. * @param CModel $model the data model * @param string $attribute the attribute name * @param array $htmlOptions additional HTML attributes to be rendered in the container div tag. * @param boolean $enableAjaxValidation whether to enable AJAX validation for the specified attribute. * @param boolean $enableClientValidation whether to enable client-side validation for the specified attribute. * @return string the validation result (error display or success message). */ public function error($model, $attribute, $htmlOptions = array(), $enableAjaxValidation = true, $enableClientValidation = true) { if (!$this->enableAjaxValidation) { $enableAjaxValidation = false; } if (!$this->enableClientValidation) { $enableClientValidation = false; } if (!$enableAjaxValidation && !$enableClientValidation) { return TbHtml::error($model, $attribute, $htmlOptions); } $id = CHtml::activeId($model, $attribute); $inputID = TbArray::getValue('inputID', $htmlOptions, $id); unset($htmlOptions['inputID']); TbArray::defaultValue('id', $inputID . '_em_', $htmlOptions); $option = array('id' => $id, 'inputID' => $inputID, 'errorID' => $htmlOptions['id'], 'model' => get_class($model), 'name' => $attribute, 'enableAjaxValidation' => $enableAjaxValidation, 'inputContainer' => 'div.control-group'); $optionNames = array('validationDelay', 'validateOnChange', 'validateOnType', 'hideErrorMessage', 'inputContainer', 'errorCssClass', 'successCssClass', 'validatingCssClass', 'beforeValidateAttribute', 'afterValidateAttribute'); foreach ($optionNames as $name) { if (isset($htmlOptions[$name])) { $option[$name] = TbArray::popValue($name, $htmlOptions); } } if ($model instanceof CActiveRecord && !$model->isNewRecord) { $option['status'] = 1; } if ($enableClientValidation) { $validators = TbArray::getValue('clientValidation', $htmlOptions, array()); $attributeName = $attribute; if (($pos = strrpos($attribute, ']')) !== false && $pos !== strlen($attribute) - 1) { $attributeName = substr($attribute, $pos + 1); } foreach ($model->getValidators($attributeName) as $validator) { if ($validator->enableClientValidation) { if (($js = $validator->clientValidateAttribute($model, $attributeName)) != '') { $validators[] = $js; } } } if ($validators !== array()) { $option['clientValidation'] = "js:function(value, messages, attribute) {\n" . implode("\n", $validators) . "\n}"; } } $html = TbHtml::error($model, $attribute, $htmlOptions); if ($html === '') { $htmlOptions['type'] = $this->helpType; TbHtml::addCssStyle('display:none', $htmlOptions); $html = TbHtml::help('', $htmlOptions); } $this->attributes[$inputID] = $option; return $html; }
public function testError() { $I = $this->codeGuy; $model = new Dummy(); $model->addError('text', 'Error text'); $html = TbHtml::error($model, 'text', array('class' => 'error')); $span = $I->createNode($html, 'span.help-inline'); $I->seeNodeCssClass($span, 'error'); $I->seeNodeText($span, 'Error text'); }
'showAnim'=>'fold', 'showOn'=>'both',//focus,button,both 'changeMonth'=>true, 'changeYear'=>true, 'yearRange'=>'-100:+0',//last hundred years 'buttonText'=>'Please select date', 'buttonImage'=>Yii::app()->request->baseUrl."/images/calendar.png", 'buttonImageOnly'=>true, 'dateFormat'=>'yy-mm-dd', ), 'htmlOptions'=>array( 'style'=>'height:25px;', ), )); ?> <?php echo TbHtml::error($model,'dateTo'); ?> </td> <td><?php echo $form->textFieldControlGroup($model,'meeting_no'); ?></td> </tr> <tr> <td><?php echo $form->dropDownListControlGroup($model,'responsible_mda_id', TbHtml::listData(Mda::model()->findAll(),"id","description"), array( 'empty'=>'--select--' )); ?> </td> <td></td> <td></td> <td></td> </tr>
'showAnim'=>'fold', 'showOn'=>'both',//focus,button,both 'changeMonth'=>true, 'changeYear'=>true, 'yearRange'=>'-5:+100',//next hundred years 'buttonText'=>'Please select date', 'buttonImage'=>Yii::app()->request->baseUrl."/images/calendar.png", 'buttonImageOnly'=>true, 'dateFormat'=>'yy-mm-dd', ), 'htmlOptions'=>array( 'style'=>'height:25px;', ), )); ?> <?php echo TbHtml::error($model,'deadline'); ?> <div class="form-actions"> <?php echo TbHtml::submitButton('Save',array( 'color'=>TbHtml::BUTTON_COLOR_SUCCESS, 'size'=>TbHtml::BUTTON_SIZE_DEFAULT, )); ?> <?php echo TbHtml::button('Close',array( 'color'=>TbHtml::BUTTON_COLOR_DEFAULT, 'size'=>TbHtml::BUTTON_SIZE_DEFAULT, 'id'=>'close-button' )); ?> </div> <?php $this->endWidget(); ?>
?> <p class="hint"><?php echo UserModule::t('Display order of fields.'); ?> </p> </div> <div class="row visible"> <?php echo TbHtml::activeLabelEx($model, 'visible'); ?> <?php echo TbHtml::activeDropDownList($model, 'visible', ProfileField::itemAlias('visible')); ?> <?php echo TbHtml::error($model, 'visible'); ?> </div> <div class="row buttons"> <?php echo TbHtml::button($model->isNewRecord ? UserModule::t('Create') : UserModule::t('Save'), array('color' => TbHtml::BUTTON_COLOR_SUCCESS, 'submit' => '')); ?> </div> <?php echo TbHtml::endForm(); ?> </div><!-- form --> <div id="dialog-form" title="<?php