【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

回到顶部