【问题标题】:Best way to get request object from within Symfony forms?从 Symfony 表单中获取请求对象的最佳方式?
【发布时间】:2011-06-14 14:49:06
【问题描述】:

我使用 Symfony 和 Doctrine 为我的 CMS 生成表单。最近我一直在通过基于特定 URL 参数设置默认值来自定义它们。

例如,我有两个模型:PollQuestionPollChoicePollChoice 通过poll_question_id 字段与PollQuestion 建立关系。 PollChoice 表单有一个下拉列表,其中列出了PollChoice 可以附加到的所有可用PollQuestions。我也有两条路线:pollchoices/newpoll/:poll_id/choice/new。两条路由都显示PollChoiceForm,但是通过使用第二条路由,您会自动看到 PollQuestion 下拉列表设置为:poll_id URL 参数。为此,我只需通过从请求对象中获取 :poll_id 的值来更改 PollChoiceForm 类中下拉小部件的默认值。

我的问题有两个:

1) 我目前使用sfContext::getInstance()->getRequest() 获取请求对象。我知道sfContext::getInstance() 不受欢迎,但我无法找到另一种获取它的方法。还有其他方法吗?依赖注入似乎是一个不错的方法,但我不知道如何在不进行大量黑客攻击的情况下实现这一目标(我想避免)。

2) 我是否完全错误地根据 URL 参数更改表单的默认值?

【问题讨论】:

    标签: php symfony1


    【解决方案1】:

    每当我需要表单中的上下文时,我都会通过构造函数注入来实现。

    在行动中:

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

    形式:

    $this->getOption("context");
    

    【讨论】:

    • 我喜欢这种方法。我想我会编辑我的自定义管理主题的操作以自动将其注入构造函数中。
    猜你喜欢
    • 2018-09-12
    • 1970-01-01
    • 2015-01-10
    • 1970-01-01
    • 2019-11-25
    • 1970-01-01
    • 1970-01-01
    • 2018-11-23
    • 1970-01-01
    相关资源
    最近更新 更多