这些是关于Yii的三个概念,我真的不知道我们应该使用什么场景?
任何人都可以善意地澄清那些Yii元素,以及我们应该在什么情况下使用它们?
答案 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等的实例。您还可以看到实时模型,视图和控制器文件。