【Yii从0到1】yii2学习笔记创建yii2小部件
小部件类似于vue里面的组件,可重复使用的代码部分(个人理解),类似于系统中的ActiveForm!
根据系统要求,创建一个TestWidget位于根目录下components下面,位置是yii2componentsTestWidget.php,代码如下
一种方法,用widget方法创建
继承 yiiaseWidget 类并覆盖 yiiaseWidget::init() 和/或 yiiaseWidget::run() 方法可创建小部件。通常 init()
方法处理小部件属性, run()
方法包含小部件生成渲染结果的代码。 渲染结果可以直接“输出”或通过 run()
方法作为字符串返回。
如下代码中 TestWidget 编码并显示赋给 $data和$res
属性的值, 如果data属性没有被赋值,默认会显示 第一个if里面的内容。
html页面代码如下:
可以直接使用小部件的方式引入使用即可~非常方便
其二,使用直接返回视图文件的方式
默认情况下,小部件的视图应存储在 WidgetPath/views
目录,WidgetPath
代表小部件类文件所在的目录。 假如小部件类文件在 @app/components
下, 上述示例会渲染 @app/components/views/test.php
视图文件。 目录地址如下:
控制器代码如下:其他不动,run()方法改一下,和渲染视图用的一样,render方法~
test文件如下内容:
需要引入小部件的html代码效果:
我这里把$this->render()改成了小部件的实例(后期待修正,自己瞎琢磨不知道这一步对不对,显示是显示出来了但是原理不明白)
===============以下个人经验,错误请告知会及时修正==============
后来琢磨了一下,视图引入中,这里要注意的是:
① 当用视图引入的时候,如果你原先使用普通字符通过run渲染小部件的html代码部分会直接被覆盖,此时是视图引入状态;
② 当切换成begin方法视图引入的时候,需要注释代码的run()方法,不然会出现小部件重复;
以上是 【Yii从0到1】yii2学习笔记创建yii2小部件 的全部内容, 来源链接: utcz.com/z/515521.html