У меня есть это утверждение внутри моей сущности:
/**
* @Assert\Choice(choices = {"fiction", "non-fiction"}, message = "Choose a valid genre.")
*/
protected $genre;
И документация говорит для сообщение параметр:
тип: строка
дефолт: Выбранное вами значение не является допустимым.
Это сообщение, которое вы получите если множественная опция установлена в ложь и базовое значение отсутствует в допустимом массиве вариантов.
И в моем виде формы, у меня есть:
->add('genre', ChoiceType::class, [
'multiple' => false,
])
Но когда значение Пол поле не находится в допустимом массиве вариантов («беллетристика», «не беллетристика»), сообщение об ошибке «Это значение недопустимо».
Это не значение по умолчанию и не значение, которое я установил в сущности.
Я знаю, что могу переопределить его в форме типа с помощью «invalid_messageпараметр,
но я хочу, если есть объяснение этому?
Почему «сообщение«Параметр Утверждение / Выбор не работает?
Как я могу заставить его работать так, как ожидалось в Symfony? доктор ?
В документах не указано, что вы можете передавать возможные значения в этом месте.
Вам необходимо создать функцию в классе (например, «getGender ()»), которая возвращает массив с допустимыми значениями.
Затем с помощью assert вы можете вызвать эту функцию следующим образом:
class Author
{
/**
* @Assert\Choice(callback = "getGender", message = "Choose a valid genre.")
*/
protected $genre;
public function getGender() {
return array("fiction", "non-fiction");
}
}
И будьте осторожны, вы использовали «выбор» вместо «обратного вызова» в аннотации;)
Мое первое замечание было бы, что
/**
* @Assert\Choice(choices = {"fiction", "non-fiction"}, message = "Choose a valid genre.")
*/
protected $genre;
имя атрибута — жанр, но в типе формы вы называете его пол.
Я думаю, это просто ошибка опечаток.
Просто переименуйте атрибут пол вместо жанра.