【发布时间】:2011-10-30 13:21:00
【问题描述】:
首先,让我说,我发现 sfFormPropel 表单的界面不一致。
有bind(),不返回任何内容,但触发验证,save(),返回保存的对象,bindAndSave(),返回布尔值,实际上是isValid()的返回值。现在,我有一个工作应用程序,但我觉得代码不正确,而且我对symfony 很陌生,所以也许我遗漏了一些东西。
我需要创建的对象需要一些外部属性,这些属性不在表单中呈现,在模型外部,由应用程序处理(例如,创建实体的用户的 userId,外部生成的 guid 等)。
目前流程如下:
- 从请求中获取值并将它们绑定到表单
- 检查表单是否有效
- 如果有效,则添加额外的值并绑定它们以再次形成一次
- 保存表单并返回对象
显而易见的答案是将特定于应用程序的值添加到从请求中检索到的值中,但是 如果表单无效,绑定特定于应用程序的值是没有意义的,因为它们可能很昂贵操作,可能会创建数据库记录等。 此外,不应将这些值与发布请求一起传递,它们应该仅来自应用程序。
现在,虽然我必须让模型来做这些事情,但是由于数据是模型外部的,所以动作仍然需要将它传递给模型。问题是,如果我在bind() 之后调用$form->getObject(),它仍然有旧数据,而不是提交的数据。
实现这种后处理的正确方法是什么?
第二次赏金开始奖励其他有价值的答案
【问题讨论】:
标签: php symfony1 propel symfony-forms