Лучший способ получить объект запроса из форм Symfony? - PullRequest
2 голосов
/ 14 июня 2011

Я использую 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?

1 Ответ

3 голосов
/ 14 июня 2011

Всякий раз, когда мне нужен контекст в форме, я делаю это с помощью инжектора конструктора.

в действии:

$this->form = new WhateverForm($whatever, array("context" => $this->getContext()));

в форме:

$this->getOption("context");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...