Я использую Symfony и Doctrine для создания форм для моих CMS. В последнее время я настраивал их, устанавливая значения по умолчанию на основе определенных параметров URL.
Например, у меня есть две модели: PollQuestion
и PollChoice
. PollChoice
имеет отношение к PollQuestion
посредством поля poll_question_id
. Форма PollChoice
имеет раскрывающийся список, в котором перечислены все доступные PollQuestion
s, к которым можно прикрепить PollChoice
. У меня также есть два маршрута: pollchoices/new
и poll/:poll_id/choice/new
. На обоих маршрутах отображается PollChoiceForm
, но при использовании второго маршрута вы автоматически увидите раскрывающийся список PollQuestion с параметром URL :poll_id
. Я делаю это, просто изменяя значение по умолчанию выпадающего виджета в классе PollChoiceForm
, выбирая значение :poll_id
из объекта запроса.
У меня вопрос двоякий:
1) В настоящее время я получаю объект запроса, используя sfContext::getInstance()->getRequest()
. Я знаю, что sfContext::getInstance()
осуждается, но я не смог найти другой способ получить его. Есть ли другой способ? Внедрение зависимостей кажется хорошим способом решения этой проблемы, но я не знаю, как этого добиться, не совершая много взломов (которых я бы хотел избежать).
2) Полностью ли я иду о неправильном способе изменения значений формы по умолчанию на основе параметров URL?