表单验证如何使用自己写好的验证类?


/**

     * 是否是字母

     *

     * @param mixed $value

     *

     * @return boolean

     */

function validate_is_alpha($value)

{

	return ctype_alpha($value);

}


/**

     * 是否是字母、数字加下划线

     *

     * @param mixed $value

     *

     * @return boolean

     */

function validate_is_alnumu($value)

{

	return preg_match('/[^a-zA-Z0-9_]/', $value) == 0;

}



那么我如何在model里面写规则呢?


public function rules()

	{

		return array(

			array('title','length','max'=>64),//这里应该怎么写呢?



有人说我 灌水。。。 :rolleyes:

这可是我实实在在遇到 的问题撒。。。。

冤枉啊。。

我知道正则可以解决,但我正则不好。。

像 PHP 中ctype_alpha($value);这些函数都是有的啊,但我不知道怎么在model的那个规则里写?

相信以后也会有人问到这样的问题的 ;)

你可以参考一下用户登陆验证的那个LoginForm




return array(

			// username and password are required

			array('username, password', 'required'),

			// password needs to be authenticated

			array('password', 'authenticate'),

			//验证码

			array('captcha','captcha','message'=>'验证码不正确')

		);



的这一句array(‘password’, ‘authenticate’),

authenticate就是model中自定义的一个方法

对,authenticate是个基于方法进行验证的例子。

考虑到重用性,你可以把写个验证的类(模仿/framework/validators)。使用的时候只要用:array(‘attribute’, ‘path.to.myvalidator’)就可以了。

这些在下面的教程里都有讲的:http://www.yiiframework.com/doc/guide/zh_cn/form.model