【发布时间】:2010-08-13 07:55:29
【问题描述】:
请参阅正确答案以获得所请求问题的解决方案。
嗨, 最近我一直在寻找 zend 框架中的电话验证,我认为这是他们的 Validator 框架中缺少的组件。因此,我创建了自定义电话验证器,我想与您分享。
将下面的代码放在一个可由require_once php 语句访问的文件中。这里我们假设这段代码粘贴在文件telephoneValidator.php中。
class Custom_Validator_Telephone extends Zend_Validate_Abstract
{
const INVALID = 'This field is required';
protected $_messageTemplates = array(
self::INVALID => "Incorrect telephone number"
);
public function __construct()
{
}
public function isValid($value)
{
if(preg_match("/^(\+)?(\([0-9]+\)\-?\s?)*([0-9]+\-[0-9]+)*([0-9]+)*$/", trim($value)))
{
return true;
}
else
{
$this->_error(self::INVALID);
return false;
}
}
}
如何使用它:使用 addElement 方法将 $tel Zend_Element 下面放在 Zend_Form 对象中
require_once("telephoneValidator.php")
$tel = new Zend_Form_Element_Text($fieldName);
$telValidator = new Custom_Validator_Telephone();
$tel->addValidator($telValidator, true)
->setAllowEmpty(false)
->addValidator('NotEmpty', true, array('messages' => array(
'isEmpty' => $label.' is required')))
->setLabel("Telephone Number");
$form->addElement($tel);
可以使用 Zend_Validate_Abstract 类的 setMessage 方法修改来自该验证器的错误消息
$telValidator->setMessage("%value% is not correct telephone number");
$tel->addValidator($telValidator, true)
此验证器可以正常处理以下格式的电话号码
+(92) 345-5141637
+(92)-345-5141637
(92) 345-5141637
(92)-345-5141637
+(92)-345-5141637
92-345-5141637
+92-345-5141637
+923455141637
923455141637
(92)-(345)-5141637
我还没有对电话号码进行长度检查,但它需要从输入的电话号码中创建一个过滤数字的过滤器,然后使用 StringLength 验证器。 虽然我是 Zend 框架的新手,但我想知道如何使用 Zend 框架的自动加载器自动将我的类包含在 应用程序文件夹 内的 自定义文件夹 中。例如,我在应用程序文件夹中的 MajorClasses 文件夹 中有我的自定义类,请告诉我如何在我的 MajorClasses 文件夹中自动包含所有类,只需指定其名称,因为该文件夹中可能有很多文件但我希望它们自动包含在内。 这在 Zend 框架中可行吗?
【问题讨论】:
标签: php zend-framework