这些是关于Yii的三个概念,我真的不知道我们应该使用什么场景?
任何人都可以善意地澄清那些Yii元素,以及我们应该在什么情况下使用它们?
最佳答案 在
CForm的文档中,可以阅读以下内容:
…we can divide a form
in two parts: those that specify each individual form inputs, and
those that decorate the form inputs. A CForm object represents the former part…
……而CActiveForm代表后者.
换句话说,CForm指定了表单的元素,但CActiveForm(作为一个小部件)呈现它.
查看源代码,我们声明CForm也可以通过引入其配置属性activeForm来依赖于CA001Form小部件并且由CActiveForm小部件包装,尽管呈现输入元素和按钮是通过其自己的方法renderElements()和renderButtons()相对地实现的.默认情况下,它们的实现依赖于使用CHtml的静态方法的类,这与CActiveForm的渲染方法完全相同(或几乎完全相同).当然,可以通过扩展类来覆盖默认行为.
这就是为什么使用这种技术的问题:CActiveForm小部件单独将表单字段和按钮的声明与它们在视图文件中的表示相结合,方法是调用CActiveForm实例的方便(必需)方法或CForm类声明表单的输入规范.单独的配置文件并通过指向适当的活动表单窗口小部件和/或通过覆盖默认呈现方法来自定义其呈现.后一种技术允许轻松地在多个动作中重用表单,并且不超过using form builder.