Форма Symfony: проверить детей перед родителемPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Форма Symfony: проверить детей перед родителем

Сообщение Anonymous »

У меня есть код, который более или менее похож на это:
Это не мой фактический код, а просто для того, чтобы показать концепцию того, что я пытаюсь сделать:
У меня есть форма, в которой требуется каждое отдельное поле, а затем некоторые проверки проводятся на значениях нескольких полей в комбинации. переопределить ">class testForm extends AbstractType
{
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefault(
'constraints',
[new Callback(
['callback' => function (
$payload,
ExecutionContextInterface $context
)
{
$data = $context->getObject()->getData();

if (strcasecmp($data['field1'], $data['field2']))
{
$context
->buildViolation('fields must be equal')
->atPath('[field1]')
->addViolation();
}
}
]
)]
);
}

public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('field1', TextType::class, ['constraints' => [new NotBlank]])
->add('field2', TextType::class, ['constraints' => [new NotBlank]]);
}
}
< /code>
Проблема, с которой я столкнулся с этим кодом, заключается в том, что оно приведет уведомление, когда вы отправляете с пустыми полями (нуль не разрешено в качестве параметров для таких функций, как strcasecmp () , поскольку Php 8.0).
Affict Это связано с тем, что родительская проверка выполняется до проверки ребенка, поэтому он проверяет, только если у поля есть значения после проверки верхнего уровня Запустить. Глядя на документацию Symfony, существует достоверное ограничение , которое, кажется, делает именно это, но, кажется, работает только с сущностями (моя форма не использует сущность, но простой DTO).
Поэтому я по -прежнему задаюсь вопросом о том, как либо сделать достоверной работать без сущностей, либо другого способа исправить ограничения на это.

Подробнее здесь: https://stackoverflow.com/questions/794 ... ore-parent
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»