Как добавить требуемое сообщение об ошибке в мои входные данные в Zend Framework 1.11?
У меня есть следующие фрагменты кода в моем forms/video.php . Но я не знаю, куда добавить сообщение о проверке для required.
$this->addElement('text','name', array(
'label'=>'Name',
'maxlength'=>20,
'class'=>'name',
'required'=>true,
'filters'=>array('StringTrim'),
'decorators'=>array(
'ViewHelper',
'Errors',
array(array('control'=>'HtmlTag'), array('tag'=>'div', 'class'=>'fieldcontrol')),
array('Label', array('tag'=>'div', 'class'=>'name')),
array(array('row'=>'HtmlTag'), array('tag' => 'div', 'class'=>'row')),
)
));
Вместо "Значение обязательно и не может быть пустым", я хотел бы установить его на что-то другое, например "Пожалуйста, введите свое имя".
3
3 answers
В конце концов, у меня получилось так:
$this->addElement('text', 'age', array(
'label'=>'Age',
'maxlength'=>2,
'class'=>'age',
'required'=>true,
'filters'=>array('StringTrim'),
'validators'=>array(
array(
'validator'=>'NotEmpty',
'options'=>array(
'messages'=>'Please enter your age.'
),
'breakChainOnFailure'=>true
),
array(
'validator'=>'Int',
'options'=>array(
'messages'=>'Age must be a number.'
),
'breakChainOnFailure'=>true
),
array(
'validator'=>'between',
'options'=>array(
'min'=>8,
'max'=>10,
'messages'=>array(
Zend_Validate_Between::NOT_BETWEEN => 'This is for %min% to %max% years old.'
)
)
),
),
'decorators'=>array(
'ViewHelper',
'Errors',
array(array('control'=>'HtmlTag'), array('tag'=>'div', 'class'=>'fieldcontrol')),
array('Label', array('tag'=>'div', 'class'=>'age')),
array(array('row'=>'HtmlTag'), array('tag' => 'div', 'class'=>'row')),
),
));
5
Author: zen.c, 2012-05-10 10:46:21
Я бы, скорее всего, оставил значение required
по умолчанию и вместо этого использовал валидатор NotEmpty
.
$this->addElement('text', 'age', array(
'label'=>'Age',
'maxlength'=>2,
'class'=>'age',
'filters'=>array('StringTrim'),
'validators'=>array(
array(
'validator'=>'Int',
'options'=>array(
'messages'=>'Age must be a number.'
)
),
array(
'validator'=>'NotEmpty',
'options'=>array(
'messages'=>'Please enter your age.'
)
),
array(
'validator'=>'between',
'options'=>array(
'min'=>8,
'max'=>10,
'messages'=>array(
Zend_Validate_Between::NOT_BETWEEN => 'Your age must be between %min% to %max%.'
)
)
)
),
'decorators'=>array(
'ViewHelper',
'Errors',
array(array('control'=>'HtmlTag'), array('tag'=>'div', 'class'=>'fieldcontrol')),
array('Label', array('tag'=>'div', 'class'=>'age')),
array(array('row'=>'HtmlTag'), array('tag' => 'div', 'class'=>'row')),
),
));
NotEmpty()
делает по существу то же самое, что и isRequired()
, но является фактическим валидатором, где isRequired()
- это просто флаг, установленный в Zend_Form_Element
. Кроме того, это не должно испортить ваши сообщения.
1
Author: RockyFord, 2012-05-10 10:54:53
Отредактированный
Это должно сделать это:
...
$name = $this->getElement('name')->addErrorMessage('Please enter your name');
...
0
Author: amburnside, 2012-05-10 10:17:19