У меня есть динамический список вариантов для отображения в форме, и я просто хочу сохранить их в одном месте, так как это не единственные наборы данных, о которых мне нужно заботиться.
Чтобы проверить эти варианты в Entity over choices-CallbackValidator, мне нужно указать класс и функцию исправления, в которых будут возвращаться варианты.
Это кажется неправильным, так как я все еще изучаю Symfony2 и концепцию DIC, и тогда я не ожидал бы указать конкретную функцию / класс обратного вызова, а службу или придумать другой способ решения этой проблемы.
Я хотел бы дать не имя класса, а имя службы в качестве обратного вызова Я здесь не прав?
Мне нужен список опций для
- заполните форму
- для проверки сущности с аннотациями
- чтобы узнать, куда отправлять электронные письма (позже)
Настройте сейчас:
services.yml - DataManager, определенный с помощью service_container и формы как службы (я не знаю, верно ли это):
services:
data_manager:
class: TestBundle\Service\DataManager
arguments:
- "@service_container"
- %tc_data.list%
support_type_form:
class: TestBundle\Form\Type\TicketType
arguments: ["@service_container"]
tags:
- { name: form.type }
Форма:
class TicketType extends FormType
{
public function buildForm(FormBuilder $builder, array $options)
{
$theChoices = $this->getContainer()->get('data_manager')->getTheChoices();
...
}
}
Сущность:
class Ticket
{
/**
* @Assert\NotBlank()
* @Assert\Choice(callback = {"NotAServiceReference", "getTheChoices"})
*/
private $the_list_field;
}
Итак, у меня есть список данных в сервисе, но как бы вы предложили мне выбрать варианты для проверки сущности?
Еще одно решение, о котором я подумал, - это использование проверки обратного вызова (ссылка 2), но даже в документах говорится:
// somehow you have an array of "fake names"
$fakeNames = array();
Как / вы решили это?
Ссылки
- См .: http://symfony.com/doc/current/reference/constraints/Choice.html#supplying-the-choices-with-a-callback-function (нажмите аннотации)
- См .: http://symfony.com/doc/current/reference/constraints/Callback.html#the-callback-method