Получение ошибки ниже,
Ожидаемый аргумент типа "целое число", "NULL", указанный в пути к свойству "experience".
Код приведен ниже,
->add('experience', TextType::class, [
'constraints' => [
new NotBlank([
"message" => $this->translator->trans('Please enter experience.')
]),
new Length([
'max' => 2
]),
],
'required' => false
])
Когда я отправляю пустую форму (время создания), она показывает мне «Пожалуйста, введите опыт».
Теперь в форме редактирования, если я ввожу неправильное значение (больше данных, таких как 3434), оно показывает мне, что значение не должно превышать 2 символа.
Проблема возникает, когда я отправляю пустые данные во время редактирования. Отправка с пустым опытом (это обязательное поле в форме), выдает ошибку ниже
Ожидаемый аргумент типа "целое число", "NULL", указанный в пути к свойству "experience".
Я пробовал разные варианты из Интернета, такие как установка для «empty_data» значения null или '', но это не работает.




Ваш метод установки должен разрешать значения null, если вы принимаете их, судя по форме:
public function setExperience(?int $experience): void
{
$this->experience = (int) $experience;
}
Если вы хотите быть точным, ?int принимает как int, так и null. Я не хочу, чтобы кто-то ставил там что-то еще.
Конечно, именно поэтому я говорил об определении (теле), а не о декларации, а именно: $this->experience = (int) $experience; потому что, если вы оставите это, как вы написали, значение NULL будет стрелять в базу данных с 0 в качестве значения по умолчанию (int).
Проблема также решается путем простой постановки вопросительного знака перед приведением типа в аргументе, публичная функция setExperience(?int $experience): void
Чтобы быть очень точным, и если вы хотите иметь значение NULL, вам следует избегать добавления сопоставления с целым числом. Избавьтесь от (int) в теле вышеуказанной функции.