我正在使用Yii 1.1.16中的多联系表格.用户可以在哪里添加多个电话号码.
问题是,我如何使用Yii的规则()来验证这一点?
我尝试使用它,但不起作用
public function rules()
{
return array(
array('contacts[value][]','required'),array('contacts[value][]','integerOnly'=>true),'type','type'=>'array','allowEmpty'=>false)
);
}
这是关于jQuery端如何工作的示例Fiddle.我希望它能够使用’enableAjaxValidation’=> true进行验证.此外,当添加更多字段时,它会复制输入的id.没有ajax帖子是onblur / onfocus
最佳答案
使用自定义验证.
在规则中声明自定义验证器,并在验证器方法中定义所需的验证.
public function rules()
{
return array(
array('contacts',validateContacts),);
}
public function validateContacts($attribute,$params)
{
if (length($this->contacts) == 0) {
$this->addError($attribute,'You must add at least one contact!');
}
foreach($this->contacts as $contact) {
// ...
}
}
在控制器中,将contacts数组分配给Model字段并调用模型的验证方法.如果有任何错误,它将通过该行显示
在视图中.
控制器包含调用验证的代码.
$contactModel = new Contact;
// assign the array of contacts to the model
$contactModel->contacts = $POST['myForm]['contacts']
$contactsModel->validate();
$this->render('myform',contactModel);
如果您希望通过Ajax进行验证,则需要在创建表单时指定:
$form=$this->beginWidget('CActiveForm',array(
'id'=>'top-websites-cr-form','enableAjaxValidation'=>true,'clientOptions' => array(
'validateOnSubmit'=>true,'validateOnChange'=>true),));
在这种情况下,您的控制器可以检查ajax表单.
if(isset($_POST['ajax']) && $_POST['ajax']==='branch-form')
{
echo CActiveForm::validate($model);
Yii::app()->end();
}
引用:
http://www.yiiframework.com/wiki/168/create-your-own-validation-rule/
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。