我有一个UserForm类,该类具有从相关模型(由yml中的外部关系指定)填充的选择列表,如下所示:

$this->setWidget('report_id', new sfWidgetFormDoctrineChoice(array('model' => $this->getRelatedModelName('Report'))));

我想通过“有效”的“报告”字段之一过滤来自此关系的“报告”对象,以使只有“ active = 1”的报告出现在表单中。

我有一个方法ReportTable :: GetActiveReports()执行适当的查询并返回过滤后的报告。 因此,一种选择是用该函数的结果填充Widget。 关于语法的任何提示可以做到这一点?

在我看来,更干净的方法是使用UserFormFilter类在此处按active = 1过滤报告。 不幸的是,我找不到有关如何使用表单过滤器(或实际上是什么)的任何文档,因此也许这不是正确的解决方案。 表单过滤器是否是适合此工作的工具? 看来我应该使用此处定义的Doctrine_Record_Filter_Standard类: http : //www.doctrine-project.org/api/orm/1.2/doctrine/doctrine_record_filter_standard.html但我不清楚合适的用法。

任何指导都会有所帮助。 谢谢!

#1楼 票数:1 已采纳

最快的方法是保留现有的代码,只是稍作调整。

在您的模型中,实现一个方法,该方法仅返回所需记录的查询对象,而无需execute() 基本上是您在GetActiveReports()方法中创建的查询对象(然后可以重构此方法以使用新方法)。

然后,在您的表单类中:

$queryObject = Doctrine::getTable("Report")->GetActiveReportsQuery();
$this->setWidget('report_id',
  new sfWidgetFormDoctrineChoice(array(
    'model' => $this->getRelatedModelName('Report'),
    'query' => $queryObject)
  )
);

然后,小部件应使用指定的查询对象来检索正确的过滤记录。

  ask by Dan translate from so

未解决问题?本站智能推荐:

1回复

symfony执行多个查询以填充重复的表单字段

我的symfony项目有一个对象A,它与对象B有一对多的关系,即 在A的形式中,我使用$ this-> embedRelation('B')来显示用于输入/编辑B的表格。到目前为止一切都很好。 B的表单包含一个自动生成的sfWidgetFormChoice,它自动从数据库中填
1回复

symfony:具有某些相互关联的字段的表单

我有这个schema.yml 我想制作一个表格,使这些字段相互关联:我在下拉菜单中选择地区,然后在下一个下拉菜单中选择所要地区的省份,然后在最后一个下拉菜单中仅看到先前选择的省内城市。 我不知道该怎么做...您能帮我吗?
2回复

如何避免多次存储Symfony表单的重复字段?

我正在使用Symfony 1.4和Doctrine。 我有一个带有电子邮件字段的模型A。 A的形式显示输入,用户应在其中正确输入电子邮件。 但是众所周知,有时候他们不这样做。 为了解决这个问题,我在模型(以及表单)中插入了一个额外的字段,称为* repeat_email *,以防止拼
1回复

Symfony:sfWidgetFormInputCheckbox()“on”vs对于Doctrine表单的true?

我有一个自定义表单,它扩展了Doctrine对象的Doctrine基本表单。 我有一个类型为:boolean的数据库字段。 对于我的表单,我有一个sfWidgetFormInputCheckbox()小部件。 提交表单后on如果选中了复选框,则复选框的值将返回on如果未选中,则不会传递
1回复

如何使用Symfony命令行构建基于单一教义的表单

使用以下方法生成基于教义的表格时: Symfony会覆盖我之前生成和编辑的表格,这是错误的! :) 有人知道如何生成单一表格吗? 应该是这样的:
1回复

symfony过滤器将行为从[field = value]更改为[field LIKE%value%]

在我的过滤器中,一个字段的行为是在数据库表中搜索一行值equal字段以过滤形式提供的值的行。 我想更改其行为以在DB表中搜索具有与表单( %LIKE% )形式提供的字段值匹配的行/行。 我知道可以通过向过滤器类添加addFieldnameColumnQuery方法来完成,但是我想知道的是
1回复

如何创建需要访问其他字段值的Symfony验证器?

我想实现一个验证注册表单密码的Symfony验证器,这意味着我需要一个“密码确认”字段。 如何制作一个以某种方式将这些字段联系在一起的验证器? 我需要检查密码和密码是否确认值匹配。 在Symfony中如何正确实现这些内容?
1回复

symfony 1.4教义形式-引入固定值字段

编辑。 总结:我只希望SomeForm扩展我的DoctrineForms以不包括某些字段。 它们不可编辑。 我想在代码中的某个地方设置的固定值。 希望这应该是足够的信息,您无需阅读本文的其余部分... 嗨,您好。 这是我的情况: 我有教义产生的SomeModel