【发布时间】:2011-06-14 14:49:06
【问题描述】:
我使用 Symfony 和 Doctrine 为我的 CMS 生成表单。最近我一直在通过基于特定 URL 参数设置默认值来自定义它们。
例如,我有两个模型:PollQuestion 和 PollChoice。 PollChoice 通过poll_question_id 字段与PollQuestion 建立关系。 PollChoice 表单有一个下拉列表,其中列出了PollChoice 可以附加到的所有可用PollQuestions。我也有两条路线:pollchoices/new 和 poll/:poll_id/choice/new。两条路由都显示PollChoiceForm,但是通过使用第二条路由,您会自动看到 PollQuestion 下拉列表设置为:poll_id URL 参数。为此,我只需通过从请求对象中获取 :poll_id 的值来更改 PollChoiceForm 类中下拉小部件的默认值。
我的问题有两个:
1) 我目前使用sfContext::getInstance()->getRequest() 获取请求对象。我知道sfContext::getInstance() 不受欢迎,但我无法找到另一种获取它的方法。还有其他方法吗?依赖注入似乎是一个不错的方法,但我不知道如何在不进行大量黑客攻击的情况下实现这一目标(我想避免)。
2) 我是否完全错误地根据 URL 参数更改表单的默认值?
【问题讨论】: