文档章节

教你在Yii2.0框架中如何创建自定义小部件

 小田天
发布于 2016/11/17 11:51
字数 416
阅读 70
收藏 0

来源:How to create custom widget in Yii2.0 Framework

本教程将帮助您创建自己的自定义小部件在 yii framework 2.0。部件是可重用的模块和用于视图。

创建一个小部件,需要继承 yii\base\Widget,覆盖重写 yii\base\Widget::init() 和/或 yii\base\Widget::run() 方法.

注意:在yii 1.x,我们将使用 widgets 的文件夹。

在 Yii2.0 创建自己的小部件

首先创建一个名为 widgets 的文件夹在项目根目录。现在在 widgets文件夹内创建一个“HelloWidget”类 。使用这个小部件,我们将与用户名一起显示欢迎消息。请参见下面的代码来创建一个小部件类。

<?php
namespace app\widgets;

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() - 应该包含小部件的属性,
run()  - 应该包含小部件的渲染结果

HelloWidget”这个类是我们的自定义小部件。“app\widgets”是这个类的名称空间,“HelloWidget”是一个类名。使用命名空间和类名,我们可以访问这个小部件应用,即‘app\widgets\HelloWidget’。

在Yii2.0显示小部件内容

在视图代码中使用 app\widgets\HelloWidget 添加小部件应用。看到以下代码如何被称为小部件类。

控制器::SiteController.php

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

视图: site/hellowidget.php

<?php
use app\widgets\HelloWidget;
?>
<?= HelloWidget::widget(['message' => ' Yii2.0']) ?>

输出

Welcome Yii2.0

我认为它可能对你有帮助。

译者注:本文基于原文略有改动。

本文转载自:https://getyii.com/topic/174

粉丝 1
博文 84
码字总数 49841
作品 0
怀化
私信 提问
在Yii2.0版本中中,如何从控制器里面传递变量到布局文件layouts里的模板中

关于在Yii1.x的版本中变量的传递可以查看这个:在Yii框架中,控制器如何传递变量给layouts里的模板,下面说说在Yii2.0中的实现方法。 在Yii2.0中,view模板文件里面的$this已经不是对应的控制...

hfreeze
2018/07/02
0
0
在 Apache Wink 中使用 Dojo Grid 和 Dojo Tree 小部件

转自:http://www.ibm.com/developerworks/cn/web/wa-dojotree/index.html?ca=drs- 简介 REST 是一种用于分布式超媒体系统(比如 World Wide Web)的软件架构。资源,或者特定信息来源是 RE...

小卒过河
2011/11/17
467
0
Yii 2.0实现联表查询加搜索分页的方法示例

{ #关联查询1:这里加上被关联字段 public $class_name; ... public function rules() { return [ [['article_title','article_content'], 'required'], [['article_content','article_title......

陈小龙哈
2018/06/26
0
0
【Infragistics教程】使用可重复使用的自定义组件更快地创建原型

【下载Infragistics Ultimate最新版本】 Indigo Studio最大的优势是您可以定义和设计屏幕组件和交互的粒度,以及独立于屏幕上其他元素管理它们的能力。 当然,您可以在屏幕级别进行设计;设计...

电池盒
01/10
0
0
Dojo Mobile 1.7 入门

最新版的移动 Web 开发框架 Dojo Mobile 1.7,是 Dojo Toolkit 的一个扩展。本文将使您了解如何从主干网址下载 Dojo 1.7,以及如何在您的应用程序中使用 Dojo Mobile。您还将探索它提供的各种...

IBMdW
2012/12/18
4.2K
8

没有更多内容

加载失败,请刷新页面

加载更多

ucos 中断,调度,互斥 分析

实际场景: 首先有个标志位 pps_flag,是一个全局变量。有两个地方会用到这个变量,一个是pps信号触发的外部中断,一个是ucos的任务。当pps信号触发外部中断的时候pps_flag被置为2,当任务里面...

青春无极限
16分钟前
1
0
spark streaming、flink和storm区别浅析

1. 介绍 这三个计算框架常常被拿来比较。从我的角度来看,三者的比较可以分为两类(mini-batches vs. streaming)。spark streaming属于微批量的伪流式准实时计算框架(spark本身属于批处理框架...

xiaomin0322
24分钟前
1
0
存储过程无参数,in,out ,in out 的用法

select * from scott.emp where empno=7839 or empno=7566 select * from emp5 create table emp5 as select * from scott.emp -----------------in create or replace procedure raisesalar......

颜丽
今天
2
0
SOFAJRaft-RheaKV 是如何使用 Raft 的 | SOFAJRaft 实现原理

SOFAStack Scalable Open Financial Architecture Stack 是蚂蚁金服自主研发的金融级分布式架构,包含了构建金融级云原生架构所需的各个组件,是在金融场景里锤炼出来的最佳实践。 本文为《剖...

SOFAStack
今天
2
0
同一父类,不同子类集合可判断该元素组是否相等

判断集合是否相等时只关注元素是否相等,无需考虑类型,即同调父类AbstractList里的equal方法 源码如下: public boolean equals(Object o) { if (o == this) return true; if (!(o instance...

恋码之子
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部