Например у нас есть форма с двумя полями, фильтров и валидаторов:Как установить значение поля формы из другого?
$factory = new \Zend\Form\Factory();
$form = $factory->createForm([
'elements' => [
[
'spec' => [
'name' => 'fieldOne',
'type' => 'Text',
],
],
[
'spec' => [
'name' => 'fieldTwo',
'type' => 'Text',
],
],
],
'input_filter' => [
'fieldOne' => [
'filters' => [
['name' => 'StringTrim'],
],
'validators' => [
new \Application\Validator\FieldOneValidator(),
],
],
'fieldTwo' => [
'filters' => [
['name' => 'StringToUpper'],
],
],
],
]);
Если fieldOne
является действительным и fieldTwo
пусто, то необходимо установить форму отфильтрованного значения fieldOne
в fieldTwo
и процеживают.
$form->setData([
'fieldOne' => ' test ',
'fieldTwo' => '',
]);
if ($form->isValid()) {
$form->getData(); // ['fieldOne' => 'test', 'fieldTwo' => 'TEST']
}
$form->setData([
'fieldOne' => ' test ',
'fieldTwo' => 'not empty',
]);
if ($form->isValid()) {
$form->getData(); // ['fieldOne' => 'test', 'fieldTwo' => 'NOT EMPTY']
}
Как это реализовать?
Валидатор проверяет только значение, но мне нужно его изменить с помощью контекста. –