Symfony как проверить поле EntityType

У меня есть это поле 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 - это не статическая функция !!

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
3
0
1 241
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Поле сущности не позволяет выбрать недопустимое значение (если у вас недопустимое значение, сущность не будет найдена -> не сможет отправить форму). Это тоже поведение типа выбора.

Но для обратного вызова существует специальное ограничение обратного вызова - https://symfony.com/doc/current/reference/constraints/Callback.html, которое можно использовать для вызова функции ограничения.

Итак, если пользователь манипулирует dom и добавляет еще один элемент в поле выбора объекта, проверка формы автоматически должна отправлять ошибку?

Mintendo 05.05.2018 17:17

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

M. Kebza 06.05.2018 04:37

Другие вопросы по теме