Проверка полей формы завершается неудачно, но они не находятся в форме

#symfony #doctrine #twig #symfony5

Вопрос:

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

Сущность:

     /**
     * @ORMColumn(name="lastvisit_date", type="datetime")
     * @AssertDateTime()
     */
    private $lastvisitDate;
 

Другое поле выглядит так же.

После отправки формы эти 2 поля помечаются как неправильные при выполнении:

Контроллер:

 $form->handleRequest($request);   // this catches 2 validation errors for fields missing in $request
 

Шаблон-Дамп формы.ошибки :
Ошибка проверки

Насколько я понимаю, должны быть проверены только поля, отправленные вместе с формой, а не случайные другие поля.

Почему это происходит и как избавиться от этих полей?? Я даже не определяю их в форме.

Комментарии:

1. Как только вы захотите сохранить сущность, все утверждения сущности должны быть действительными. Если вычисляются некоторые свойства, следует использовать DTO, форму с моделью, а затем преобразовать модель в сущность. Посмотрите на этот учебник: symfonycasts.com/screencast/symfony-forms/form-dto

2. А если я просто хочу пренебречь некоторыми полями? Должен ли я вставлять их в запрос$, как если бы они были отправлены? Является ли это современным достижением в symfony?

3. Вам не нужно отправлять их в форму, если они не используются. Но они все равно должны иметь допустимые значения, когда вы устанавливаете для них ограничение. Система проверки на самом деле не зависит от системы форм. Это даже не вопрос сохранения сущности. Либо инициализируйте значения, измените правила проверки, либо используйте другой объект данных для своих форм. Возможно, вы также захотите изучить групповые проверки, которые позволяют вам контролировать, какие проверки используются.

4. Таким образом, вы говорите, что эта проблема не должна возникать и указывает на возможность того, что данные базы данных неверны, и именно поэтому проверка не выполняется, независимо от формы?

5. @Джонатан Не уверен, кому был адресован ваш последний комментарий, но, предполагая, что это был я, тогда да, я говорю, что ваши свойства сущности должны иметь допустимые значения. Если вы извлекаете свою сущность из базы данных, а lastvisit имеет значение null, то это действительно проблема. Возможно, все, что вам нужно сделать, это изменить правило проверки и разрешить значение null или дату.