Что делает ограничение Required?

Что делает обязательное ограничение в конструкторе форм? Если поле не было отправлено (не пустое значение!), Я не получаю соответствующее сообщение об ошибке. Это поле просто игнорируется.

$builder 
    ->add('firstname', TextType::class, [ 'constraints' => [new NotBlank()], 'required'=>true]) 
    ->add('lastname', TextType::class, [ 'constraints' => [new NotBlank(),] ,'required'=>true])

Как можно сказать, что поле всегда ДОЛЖНО быть представлено?

Спасибо.

2 ответа

Коллега нашел решение:

В связанной сущности вам нужно определить функцию обратного вызова следующим образом:

/**
 * Check bank account by "CUSTOMER" - not null
 * Because NotNull() not working in form type!
 * @Assert\Callback()
 */
public function validateBankaccount(ExecutionContextInterface $context)
{
    if ($this->type == self::TYPE_CUSTOMER && is_null($this->bankAccount)) {
        $context->buildViolation('Bank account is required!')
            ->atPath('bankAccount')
            ->addViolation();
    }
}

Обязательно означает, что для вашего поля необходимо указать значение. Это похоже на поведение HTML.

РЕДАКТИРОВАТЬ:

https://symfony.com/doc/current/reference/forms/types/form.html

https://symfony.com/doc/current/form/without_class.html

Проблема в ваших ограничениях, я не знаю наверняка, но если добавление их в вашу форму не решит вашу проблему, взгляните на добавление подтверждения вашей сущности, прикрепленной к вашей форме.

https://symfony.com/doc/current/reference/constraints/NotBlank.html

Затем подтвердите эту сущность в вашем контроллере

https://symfony.com/doc/current/validation.html

И, полагаясь на это, вы можете добавить ошибки в форму.

Другие вопросы по тегам