hello again, i want to know how to customize the html of the error messages in forms.
i have looked over the forums and have not found anything, i have read tons of documentation, and all that i got was
error() method
public static string error(CModel $model, string $attribute, array $htmlOptions=array ( ))
$model CModel the data model
$attribute string the attribute name
$htmlOptions array additional HTML attributes to be rendered in the container div tag. This parameter has been available since version 1.0.7.
{return} string the error display. Empty if no errors are found.
Displays the first validation error for a model attribute.
but nowhere did i find a example of how to use this $htmlOptions.
in a form, i got the custom error messages out by using
CHtml::error($form, 'username', array('class'=>'error'))
i have managed to customize its class to be called error instead of errorMessage
but i dont know how to make the tag into a <span> instead of a <div>
and i also want more tags in it because of the css that i used.
now the error message looks like this
<div class="error">Username required.</div>
i need this
<span class="error"><b>Username required.</b></span>
any help greatly appreciated.
pestaa
(Pestaa)
September 10, 2009, 9:15am
2
Via css
div.error
{
display: inline;
font-weight: bold;
}
might do the same thing.
what about the b?
<span class="error"><b>Username required.</b></span>
the b is a dummy tag, it does not serve to make the text bold, it serves for css positioning (i think i should have mentioned this at the start).
plus its not the css that i need, im using div’s for other purposes, and the span serves more as a selector in the current css, not to confuse other error classes, i mean i can change it in the css, but i would like to know first if its possible to do it in yii.
pestaa
(Pestaa)
September 10, 2009, 9:29am
4
I’m pretty sure <b> stands for bold. None of the tags are there only for css positioning.
It’s also a fact you can set CHtml properties to customize enclosing text.
i meant positioning as in i use the class="error" to make a fluid full width transparent block, to which i add a right aligned <b> tag with all the styling, backgrounds and margins etc… also its not a question of why i need it.
here is a bit of the css… so you see what i mean.
span.error {
color:red;
clear:both;
margin-left:172px;
width:430px;
position:relative;
display:block;
overflow:hidden;
margin-bottom:-1px;
text-align:right;
}
span.error b {
background:red;
float:right;
padding:1px 10px 1px 10px;
color:#fff;
display:block;
}
yes, thats what im asking for, i know it can be done, i just need some small example! :S
it seems that yii can’t do that… ill have to work around this limitation.
KJedi
(Konstantin Mirin)
September 11, 2009, 4:57pm
7
You can always create widget for this purpose. Look at the code of CHtml::error to see and copy with the modification you need.
Extending this static class is not so good ideas as creating widget, I think.
thats pretty much what i did
public function formError($model,$attribute,$html='') {
$formError = $model->getError($attribute);
if($formError!=''){
if (!empty($html)){
return str_replace('{error}',$formError,$html);
} else {
return $formError;
}
} else {
return '';
}
}