有没有人知道如何在Yii中的某些条件下将*符号添加到表单字段中。我有一个现场电话,只有当用户位置是印度时才会出现。如果有印度登录位置的用户,则字段电话号码应显示为*符号
array('phone','required','on'=>'create'),
但我的文本字段仅在位置为india.ie时显示,
<?php
if ($result->location=="india) {
echo $form->textAreaRow($model, 'phone', array('class' => 'span7', 'rows' => 4,));
}
?>
答案 0 :(得分:0)
您需要创建自定义验证规则,可能是这样的:
private $_country;
public function rules()
{
return array(
array('other_field, one_more_field', 'required'),
array('phone', 'safe'),
array('phone', 'requiredInIndia'),
);
}
public function requiredInIndia($attribute, $params)
{
if(!empty($this->phone))
{
if($this->country === 'IND')
{
$this->addError($attribute, 'Dude ! we need your phone number !');
}
}
}
public function setCountry()
{
// maybe from user ip address if you don't want to relate it to other attribute
$user_ip = CHttpRequest::getUserHostAddress();
$this->_country = some_fonction_to_get_country_iso_from_ip($user_ip);
}
public function getCountry()
{
return $this->_country;
}
然后使用$your_model->country
值手动打印视图中的*
符号,如果它符合查找的国家/地区。