【问题标题】:What would be the symfony way of handling assigning a global value to multiple form fields处理将全局值分配给多个表单字段的 symfony 方式是什么
【发布时间】:2014-02-26 18:52:11
【问题描述】:

我有一个应用程序允许人们创建包含小部件的报告。这些小部件使用自己的表单类型设置选项。我想做的是允许用户将报告保存为模板。我遇到的问题是小部件中的某些选项特定于特定用户/客户端,因此在从该模板创建报告时需要定义这些选项。

我的问题是,当从模板创建报告时,我如何允许用户定义一些选项并让其他选项保持定义。

后续问题,我将如何允许用户定义“全局”变量?例如,小部件 1、2 和 3 都是相同的表单类型,并且它们的选项都相同,即 start_time 字段。然后,当创建报告时,它会查找所有“全局”选项,并允许用户为这些选项定义一个值,然后在所有使用它的地方填充该值。

EX:假设我有 2 种小部件类型,

class WidgetTypeOne extends AbstractType

...

    $builder->add('start_date', 'date')
    ->add('end_date', 'date');

还有一个

 class WidgetTypeTwo extends AbstractType

 ...

 $builder->add('some_option','text);

现在假设用户有一个包含 4 个 WidgetTypeOne 和 2 个 WidgetTypeTwo 的报告。我想让用户看到他们的所有选项,并说对于 4 个 WidgetTypeOne 中的 3 个,“start_date”将是相同的。这样当使用此模板创建报告时,系统会提示用户输入“start_date”,这将用于填充这 3 个小部件的数据。

一旦能够添加赏金,导致解决方案的答案将获得 300 代表奖励

更新

是否可以创建一种新的字段类型,其作用类似于日期字段类型与多个选择框的工作方式,只有一个字段是原始字段类型,另一个是可用“全局变量”的选择?

会导致类似:

 <select name="form_name[field][use_options]">
     <option value="use_static">Use Static Value</option>
     <option value="define_on_create">Define When Created</option>
     <option value="add_global">Add New Global</option>
     ...The rest would be dynamically added by javascript
 </select>
 <input type="text" name="form_name[field][static_value]" />

这样我可以解析表单并知道在哪里使用全局值或静态值。

【问题讨论】:

    标签: php symfony


    【解决方案1】:

    表单的一个好方法可能是从控制器中的模板自动填充它们,然后使用类型中的查询来填充特定的用户/客户端定义的值。

    对于全局变量,您的段落让我有点困惑。我将假设您想要的是例如让用户定义一个开始日期,然后将在他创建的所有报告中自动完成。我会使用通常的数据库存储,或者使用数组类型字段或全新的实体(如果您希望每个模板使用不同的全局变量)。

    无论如何,该文档是一个非常好的起点,如果您还没有阅读过它,值得一读。

    【讨论】:

    • 我已通读该文档,并且在过去 3 年中一直在使用 symfony。我可能没有解释我想要做得很好。我会用更好的解释更新我的问题。
    猜你喜欢
    • 1970-01-01
    • 2012-10-04
    • 2016-03-01
    • 2020-07-31
    • 2015-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多