См. Правильный ответ для решения запрошенного вопроса.
Привет,
Недавно я искал для проверки телефона в Zend Framework, который я думаю, что отсутствует компонент их Validator Framework. Поэтому я создал специальный телефонный валидатор, которым я хотел бы поделиться с вами.
Поместите приведенный ниже код в файл, доступный с помощью оператора 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;
}
}
}
Как его использовать: поместите ниже $ tel Zend_Element в свой объект Zend_Form с помощью метода addElement
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);
Сообщение об ошибке от этого валидатора можно изменить, используя setMessage метод класса Zend_Validate_Abstract
$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 Framework, я хотел бы знать, как я могу автоматически включать мои классы в пользовательские папки в папку приложения , используя автозагрузчик Zend Framework. Например, у меня есть пользовательские классы в папке MajorClasses внутри папки приложения. Скажите, пожалуйста, как автоматически включить все классы в мою папку MajorClasses, просто указав ее имя, поскольку в этой папке может быть много файлов, но Я хочу, чтобы они были включены автоматически. Возможно ли это в Zend Framework?