如何使用yii2框架自定义widget,和如何传参数

作者: php 发布时间: 2019-09-04 浏览: 2816 次 编辑

本教程教你如何自定义widget,widget是view中能被重用的代码块。

创建widget的步骤:

 

1 继承yii\base\Widget.

2 实现yii\base\Widget::init() 和 yii\base\Widget::run()方法

3 注意下面代码是如何传递参数的

 

@ 创建widget

首先在项目根目录创建 components 目录,然后新建一个 HelloWidget 类。使用此widget,将会展示一条带有username的欢迎信息。如下

<?php
namespace app\components;

use yii\base\Widget;
use yii\helpers\Html;

class HelloWidget extends Widget{
    // 接收参数
    public $message;
    
    public function init(){
        parent::init();
        if($this->message===null){
            $this->message= 'Welcome User';
        }else{
            $this->message= 'Welcome '.$this->message;
        }
    }
    
    public function run(){
        return Html::encode($this->message);
    }
}
?>


init() - should contain the widget properties,
run()  - should contain rendering result of the widget

在yii2中展示widget 的内容

 

使用此widget只需在view头部引入 app\components\HelloWidget 命名空间

Controller: SiteController.php

<?php
..........
class SiteController  extends Controller
{
    ...........
    public function actionCreatewidget(){
        return $this->render('hellowidget');
    }
    ...........
}
?>

View: site/hellowidget.php

widget里面跟个数据传参

<?php
use app\components\HelloWidget;
?>
// 传递参数
<?= HelloWidget2::widget(['message' => ' Yii2.0']) ?>

OUTPUT

Welcome Yii2.0