Как использовать ChoiceListInterface в Symfony 2?

Я хотел бы отобразить динамический список флажков в форме.

До сих пор я создал форму, включающую статический список флажков, и я создал объект Tag для разных значений на разных языках и заполнил базу данных. Я хотел бы заменить статические флажки динамическим списком на основе объекта Tag.

В документации говорится, что я должен использовать интерфейс ChoiceListInterface. Но это действительно плохо документировано. У вас есть пример или глобальное логическое объяснение, чтобы помочь мне?


person Yako    schedule 28.10.2012    source источник


Ответы (2)


Вы можете расширить LazyChoiceList абстрактный класс и реализовать loadChoiceList(), создайте для него сервис, внедрите его в форму и установите как параметр choice_list.

person Mun Mun Das    schedule 29.10.2012
comment
Спасибо, но это выглядит сложно реализовать; Я не нашел в гугле таких примеров :( - person Yako; 01.11.2012
comment
@ Яко Это довольно просто. Например: stackoverflow.com/ вопросы/13313415/ :) - person Tek; 10.07.2014

Наконец, я использовал тип поля сущности:

->add('tags', 'entity', array(
            'class' => 'bndMyBundle:Tag',
            'query_builder' => function(EntityRepository $er){
                return $er->createQueryBuilder('t')
                        ->orderBy('t.en', 'ASC');
            },
            'expanded'   => true,
            'multiple'  => true,
            'property'  => 'en',
        ))

Затем мне просто нужно заменить значение «en» текущим языковым стандартом пользователя, чтобы выбрать правильный язык.

person Yako    schedule 01.11.2012
comment
Привет, Яко, этот ответ вообще не касается вопроса - его не следует помечать как принятое. Один из @m2mdas отвечает на вопрос. Его ответ может быть слишком коротким, но он строго относится к вопросу. Я думаю, вы должны отказаться от этого и либо принять ответ m2mdas, либо не принимать его и ждать лучшего объяснения. (Просто моя заметка с добрыми намерениями) - person Taz; 01.09.2014