Symfony: 4 Ожидаемый аргумент типа "integer", "NULL", заданный в пути свойства - PullRequest
0 голосов
/ 07 июня 2019

Ошибка ниже,

Ожидаемый аргумент типа "integer", "NULL", заданный в пути свойства "experience".

Код, как показано ниже,

->add('experience', TextType::class, [
    'constraints' => [
        new NotBlank([
            "message" => $this->translator->trans('Please enter experience.')
        ]),
        new Length([
            'max' => 2
        ]),
    ],
    'required' => false
])

Когда я отправляю пустую форму (создаю время), она показывает мне «Пожалуйста, введите опыт».

Теперь в форме редактирования, если я введу неправильное значение (больше данных, таких как 3434), оно показывает, что значение должно быть не более 2 символов

Проблема возникает, когда я отправляю пустые данные во время редактирования. Отправляя с пустым опытом (обязательное поле в форме), выдает ниже ошибку

Ожидаемый аргумент типа "integer", "NULL", заданный в пути свойства "experience".

Я пробовал разные варианты из интернета, например, установил "empty_data" в null или '', но он не работает.

Ответы [ 2 ]

3 голосов
/ 07 июня 2019

Ваш метод сеттера должен разрешать null значения, если вы их принимаете, судя по форме:

public function setExperience(?int $experience): void
{
    $this->experience = (int) $experience;
}
0 голосов
/ 07 июня 2019

Вместо принятого ответа вы должны заполнить обязательное поле:

->add('experience', TextType::class, [
    'constraints' => [
        new NotBlank([
            "message" => $this->translator->trans('Please enter experience.')
        ]),
        new Length([
            'max' => 2
        ]),
    ],
    'required' => true, // modified
])

Ваша бизнес-логика была следующей:

public function setExperience(int $experience): void
{
    $this->experience = $experience;
}

Вы не должны изменять это, чтобы учестьnull значений, если вы хотите, чтобы они были заданы (как диктует логика вашей модели), но вместо этого настройте ввод формы.

Как таковое, измените 'required' => false на 'required' => true.Таким образом, ввод должен быть задан (поэтому пустое значение не может быть отправлено), и во время проверки на стороне сервера значение все еще не может быть ''.

Документы: ознакомьтесь с обязательным параметром 1020 *, а также прочитайте, как он влияет на параметр empty_data .

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