【发布时间】:2012-02-15 08:28:55
【问题描述】:
场景是我的 Yii 项目中有一个表单,它将用户名作为输入,如果用户没有收到激活链接,则向用户发送一封包含激活链接的邮件。表单名称是 ResendActivationLinkForm,它扩展了 CFormModel 类。现在在提交时,我想使用 AJAX 检查数据库中是否存在 username...如何使用 yii 自己的类和函数来完成呢?
【问题讨论】:
标签: ajax validation yii
场景是我的 Yii 项目中有一个表单,它将用户名作为输入,如果用户没有收到激活链接,则向用户发送一封包含激活链接的邮件。表单名称是 ResendActivationLinkForm,它扩展了 CFormModel 类。现在在提交时,我想使用 AJAX 检查数据库中是否存在 username...如何使用 yii 自己的类和函数来完成呢?
【问题讨论】:
标签: ajax validation yii
感谢您的回复..但我以更简单的方式得到了它。 我刚刚在描述我的规则的表单模型 ResendActivationLinkForm 中添加了一个数组......例如......
public function run(){
return array(
.....
.....
array('username','exist','className'=>'User'),
);
}
username 是我的 attributeName,exist 是 validator 别名,className > 是 Model 类名,它应该寻找它的属性...
您可以查看http://www.yiiframework.com/wiki/56/ 了解更多详情。 :) 快乐编码。 :)
【讨论】:
如果 Usermodel 是具有用户名属性的模型,你可以这样做。
if(Usermodel::model()->findByAttributes(
array(),
'username = :inputtedUsername',
array(':inputtedUsername' => $_POST['username'],)))
{
//user found
}else{
//user not found
}
有关各种 CActiveRecord 方法的更多信息,请查看website
【讨论】:
我会使用自定义验证器扩展表单模型,例如 array('username','UsernameExistsValidator')。这个验证器类应该扩展 CValidator 并实现公共函数 validateAttribute($object,$attribute) 如果用户名不可用,它可以使用 $this->addError() 来标记。如果您需要更多关于其中位的输入,请参阅其他 Yii 验证器的源代码。
上述答案的逻辑将适合 validateAttribute,
【讨论】: