2013-05-31 3 views
0

Итак, я ищу решение для следующей проблемы, которая была бы «лучшей практикой» для реализации в Symfony2.3.Настройка выбираемых параметров в формах

Краткое описание ситуации: У меня есть форма, определенная в его собственном классе («ProductType») Форма содержит поле, связанное с другой таблицей. Пользователь должен выбрать 1 значение из этого списка.

Я хочу ограничить значения, которые пользователь может выбрать. Не все параметры, найденные в базе данных, актуальны. Мне нужно динамически уменьшить параметры в списке на основе информации в базе данных и текущих значений, уже примененных к форме. Я могу сделать это, добавив «Подписка», в которой я изменяю содержимое формы. Но в этой подписке мне нужен доступ к базе данных/репозитарию Doctrine, чтобы определить список, который может выбрать пользователь.

Так что мне нужно ввести Doctrine в подписку, но она недоступна в классе Type.

Какое оптимальное решение для этого? - определить класс Subscription как услугу в Symfony и ввести Doctrine через этот маршрут? - что-то еще?

К сожалению, документация по Symfony не очень понятна.

ответ

0

Вам нужно использовать построитель запросов, поэтому вам нужен репозиторий. И сделать это просто использовать

use Doctrine\ORM\EntityRepository; 

в вашем ProductType, как это описано в the doc

+1

Проблема заключалась в том, что мне нужно было использовать EntityRepository. Мне нужно было значение от объекта, для которого была создана форма для настройки результата этого запроса. В конце вам нужно переместить элемент формы в подписчик, чтобы вы получили доступ к значениям формы, а затем передали один (или более) из этих значений через закрытие EntityRepository. Сочетание этих 2 не было сразу очевидно для меня. Но сейчас он работает как шарм. – DoppyNL

+0

http://symfony.com/doc/master/cookbook/form/dynamic_form_modification.html – DoppyNL

0

я не уверен, если я получил то, что вы действительно хотите сделать, но если вы хотите, чтобы уменьшить количество элементов (например, insisde раскрывающегося) зависит от значения, построитель использования запроса для типа объекта поля:

http://symfony.com/doc/current/reference/forms/types/entity.html#query-builder

+0

Правильно, я нужен конструктор запросов, чтобы сделать это. Но для использования построителя запросов мне нужен репозиторий. По умолчанию у вас нет доступа к локатору хранилища или локатору службы в классе Subscription. Я просто проверяю, нужно ли правильное решение сделать подписку доступной через ServiceLocator и ввести Doctrine через этот маршрут. Когда вам нужно это сделать, вы можете получить огромное количество услуг, которые мне кажутся немного раздражающими. – DoppyNL

Смежные вопросы