У меня есть это поле EntityType в моей форме UserType:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('country', EntityType::class, array(
'class' => Country::class,
'choice_label' => 'nicename'
));
}
Как я могу использовать ограничения проверки для проверки этого типа поля таким образом, чтобы пользователь мог выбрать значение только в диапазоне всех строк таблицы страны? Я думаю, что мне следует использовать ограничение выбора с обратным вызовом и вызвать функцию getAllCountries внутри моего класса CountryRepository. Итак, как лучше всего управлять этим сценарием?
Что-то вроде этого:
// UserEntity.php
class User {
/**
* @Assert\Choice(callback = "App\Repository\CountryRepository", "getAllCountries")
* @ORM\ManyToOne(targetEntity = "App\Entity\Country", inversedBy = "users")
*/
protected $country;
}
Но CountryRepository - это не статическая функция !!






Поле сущности не позволяет выбрать недопустимое значение (если у вас недопустимое значение, сущность не будет найдена -> не сможет отправить форму). Это тоже поведение типа выбора.
Но для обратного вызова существует специальное ограничение обратного вызова - https://symfony.com/doc/current/reference/constraints/Callback.html, которое можно использовать для вызова функции ограничения.
да, вы можете видеть в этом нить, что вам нужно предпринять дополнительные шаги, если вы хотите динамически добавлять ценность в свой список выбора на основе формы отправки.
Итак, если пользователь манипулирует dom и добавляет еще один элемент в поле выбора объекта, проверка формы автоматически должна отправлять ошибку?