Yii - Cactiveform,cform,form builder - confusion

时间:2013-04-12 22:07:14

标签: yii yii-cformmodel yii-cform

这些是关于Yii的三个概念,我真的不知道我们应该使用什么场景?

任何人都可以善意地澄清那些Yii元素,以及我们应该在什么情况下使用它们?

2 个答案:

答案 0 :(得分:1)

CForm的文档中,可以阅读以下内容:

  

......我们可以分割表格   分为两部分:指定每个表单输入的那些部分,以及   装饰表单输入的那些。 CForm对象代表前一部分......

...而CActiveForm代表后者。

换句话说,CForm指定表单的元素,但CActiveForm(作为窗口小部件)呈现它。

查看源代码,我们声明CForm也可以render()本身,并且它的呈现依赖于CActiveForm小部件并通过引入其配置属性activeForm来包装,虽然渲染输入元素和按钮是通过自己的方法renderElements()renderButtons()相对实现的。默认情况下,它们的实现依赖于使用CHtml的静态方法的类,这与CActiveForm的渲染方法完全相同(或几乎完全相同)。当然,可以通过扩展类来覆盖默认行为。

这就是为什么要尝试使用哪种技术:CActiveForm窗口小部件通过调用{{1}的方便(必需)方法,将表单字段'和按钮'声明与它们在视图文件中的表示相结合实例或CActiveForm类在单独的配置文件中声明表单的输入规范,并通过指向适当的活动表单窗口小部件和/或通过覆盖默认呈现方法来自定义其呈现。后一种技术允许轻松地在多个动作中重用表单,并且不超过using form builder

答案 1 :(得分:1)

检查here以查看ActiveForm,CForm等的实例。您还可以看到实时模型,视图和控制器文件。