使用Yii检查构建通用多模型表单的步骤

时间:2012-09-15 10:37:55

标签: yii

这是场景(非常常见):

  • 团队注册表。
  • 团队可以有多个成员,因此用户可以添加多个成员。
  • 应插入至少一个成员。

应该允许用户:

  • A)填写团队详细信息(姓名,徽标等......);
  • B)如果某些字段不正确,则会内联通知。
  • C)选择插入团队或通过发布将其公之于众,并查看每个选项的相关验证规则。
  • D)添加更多成员(通过ADD MEMBER按钮),该按钮将显示更多与其他模型相关的表单字段。 (用户也可以删除这些字段);

我正在考虑按照以下步骤进行操作,然而,在此之前,我想请求一些关于此类主题的更有经验的人。

您能否验证上述步骤并指出可能存在的重要缺失点?

我们需要:

对于A)

  • 使用CActiveForm;
  • 渲染表单

对于B)

  • 我们需要将enableClientValidation设置为true;
  • 我们需要render both models一张表格;

对于C)

  • 创建验证模型scenarios
  • 创建一个复选框,以便在选中时将方案更改为“插入”或“发布”
    • Ajax form validation也应该是enable;

对于D)

  • 点击,我们需要显示/隐藏其他字段集。
  • 我们需要为会员收集tabular input
  • 我们需要使用renderPartial

在开始使用Yii进行编码之前,我是否遗漏了一些重要的内容?你会使用不同的步骤吗?如果是的话,请你分享一下吗?

1 个答案:

答案 0 :(得分:3)

如果您想展示Yii框架的全部潜力,您宁愿扩展CFormModel以包含您想要以单一形式集成的各种模型。

为什么呢?因为您想要使用的CActiveForm类被认为可以使用单个模型。否则,您将必须包含多个表单,每个模型一个,在用户提交创建操作时,通过Javascript立即提交所有表单,并在服务器端连接它们。

另一个简单的方法是拆分流程,以便让用户首先使用带有CActiveForm的团队模型创建团队,然后在创建团队后,将用户重定向到例如team/view/1 ,并使用CActiveForm的单个模型再次呈现成员数据的表格形式。如果您想确保每个团队至少存在一个成员,您可以将其保存在团队模型中,例如Team.leader_member。

我希望它有所帮助。欢呼声。