Как создать пользовательские сообщения об ошибках проверки даты в Symfony 4 - PullRequest
0 голосов
/ 11 мая 2018

Используя Symfony 4, у меня есть форма с полем даты. Safari (MacOS) и I.E. не поддерживает выбор даты HTML5. Когда пользователь отправляет дату (без использования средства выбора даты), я хочу, чтобы в сообщении об ошибке было указано «Пожалуйста, отформатируйте дату yyyy-mm-dd» вместо значения по умолчанию «Это значение недопустимо».

Вот мой класс формы:

class MyType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('date', DateType::class, [
                    'widget' => 'single_text',
            ])
        ;
    }

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

Вот мой класс сущности:

class MyEntity
{
   /**
     * @Assert\NotBlank()
     * @Assert\Date()
     */
    private $date;

    public function getDate()
    {
        return $this->date;
    }

    public function setDate($date)
    {
        $this->date = $date;
    }
}

Я пытался:

/**
 * @Assert\NotBlank()
 * @Assert\Date(
 *      message="Please format your date yyyy-mm-dd."
 * )
 */
private $date;

Я могу настроить сообщения об ошибках для полей формы TextType, но не могу найти никаких примеров для DateType. Любая помощь будет оценена. Спасибо.

1 Ответ

0 голосов
/ 12 мая 2018

Я думаю, что вам нужно просто установить параметр invalid_message на поле, как указано в документации

invalid_message

тип: string default: это значение недопустимо

Это сообщение об ошибке проверки, которое используется, если введенные данные в этом поле не имеет смысла (т.е. не проходит проверку).

что-то вроде

$builder
        ->add('date', DateType::class, [
                'widget' => 'single_text',
                'invalid_message' => 'Please format your date yyyy-mm-dd'
        ])
    ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...