#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';
}