Элементы Zend или валидатор

#php #zend-framework #zend-form #zend-validate

#php #zend-framework #zend-форма #zend-проверка

Вопрос:

Есть ли элемент формы zend или метод валидатора, который я могу использовать для пользовательского ввода, который принимает как числа, так и символы, например 525555CPG . Или мне придется создать собственный.

Комментарии:

1. Нет, я модифицирую проект zf1

Ответ №1:

Если ваше значение должно состоять из 6 цифр, за которыми следуют три заглавные буквы, вы можете использовать регулярные выражения, подобные этому:

 $test_pattern = "/^([0-9]{6})([A-Z]{3})$/";
$test_validator = new Zend_Validate_Regex(array('pattern' => $test_pattern));
$test_validator->setMessage("The value must be like '999999AAA'");

$test = new Zend_Form_Element_Text('test');
$test->addValidator($test_validator);
  

Для части javascript вы можете использовать маски, подобные этой, например:Плагин маскированного ввода.

В демо-версии есть пример «Ключа продукта», который может вам помочь. 🙂

Комментарии:

1. Он не проверяет test_pattern, не уверен, вот как я пытаюсь его использовать. Отредактировал мой вопрос

2. Извините, ДойДой заставил это работать сейчас, это была просто проблема с регистрацией, она отлично работает с верхним регистром

Ответ №2:

Если вы являетесь классом Zend_Form, вы можете использовать это.

 $myAlphanumericField = new Zend_Form_Element_Text('myfield',
                          array('placeholder' => 'Only letters and numbers'));
$myAlphanumericField        ->setLabel('My Numeric Field')
                                        ->setRequired(true)
                                        ->addFilter('StripTags')
                                        ->addValidator('alnum')
                                        ->getValidator('alnum')->setMessage(' Only letters and numbers are allowed');
  

Надеюсь, это сработает для вас

Ответ №3:

Вы пробовали Zend_Validate_Alnum ? Я думаю, что это лучший способ.

Ответ №4:

Если вас не волнует проверка точного формата, в частности, 6 чисел, за которыми следуют 3 буквы, вы можете использовать Zend_Validate_Alnum. Это дает вам немного больше гибкости, чем использование валидатора регулярных выражений, но может быть недостаточно строгим для ваших нужд.

 $code = '525555CPG';

$validator = new Zend_Validate_Alnum();

if ($validator->isValid($code)) {
    echo $code . ' is a valid code';
} else {
    echo $code . ' is not a valid code';
}