我使用Symfony和Doctrine爲我的CMSes生成表單。最近我一直在根據特定的URL參數設置默認值來定製它們。從Symfony表單中獲取請求對象的最佳方法?
例如,我有兩個型號:PollQuestion
和PollChoice
。 PollChoice
通過poll_question_id
字段與PollQuestion
關聯。 PollChoice
表單有一個下拉列表,列出PollChoice
可以附加到的所有可用PollQuestion
。我也有兩條路線:pollchoices/new
和poll/:poll_id/choice/new
。兩條路線都顯示PollChoiceForm
,但通過使用第二條路線,您會自動將PollQuestion下拉列表設置爲:poll_id
URL參數。我只需通過從請求對象中獲取:poll_id
的值來更改PollChoiceForm
類中的下拉小部件的默認值即可。
我的問題是雙重的:
1)I目前通過使用sfContext::getInstance()->getRequest()
獲取請求對象。我知道sfContext::getInstance()
是皺眉,但我一直無法找到另一種方式來獲取它。有另一種方法嗎?依賴注入似乎是一種很好的方式,但是我不知道如何在不進行大量黑客攻擊的情況下實現這一點(我想避免這種攻擊)。
2)我完全錯誤的方式來改變基於URL參數的窗體的默認值?
我喜歡這個方法。我想我會編輯我的自定義管理主題的動作,以便在構造函數中自動注入它。 – 2011-06-14 19:14:18