symfony флаг обязательного (*) поля формы игнорирует группы проверки - PullRequest
0 голосов
/ 10 февраля 2020

Я использую аннотации сущности @Assert с различными тегами групп.

  /**
   * @var string
   * @Assert\NotBlank(groups={"basic"})
   * @ORM\Column(name="name", type="string", length=255, nullable=true)
   */
  private $name = null;

  /**
   * @var string
   * @Assert\NotBlank(groups={"advanced"})
   * @ORM\Column(name="full_name", type="string", length=255, nullable=true)
   */
  private $fullName = null;

Поэтому для него определены basi c и advanced группы. При создании формы я использовал базовые c группы проверки, надеясь, что расширенные ограничения не будут затронуты.

$formBasics = $this->createForm(ArtistBasicType::class, $dummyArtist, [
'validation_groups' => ['basic'],
...

  public function configureOptions(OptionsResolver $resolver) {
    $resolver->setDefaults([
        'data_class'        => Artist::class,
        // 'validation_groups' => ['basic'],
    ]);
  }

Я не настроил ArtistBasicType по умолчанию validation_group (закомментировано, но также и раньше устало), и поля buildForm используют typeguesser:

->add('fullName', null, ['label' => 'Full name'])
->add('name', null, ['label' => 'Name'])

Так что я также не принудительно установил там флаг required (*). Twig также содержит следующий стандартный код:

{{ form_row(formBasics.name,{'attr': {'class': 'form-control'}}) }}
{{ form_row(formBasics.fullName,{'attr': {'class': 'form-control'}}) }}

И все же, оба поля обязательны для заполнения .

Как мне получить полное имя поле необязательно в этом случае, но готово к обязательности, если я использую advanced группу для проверки?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...