默认情况下, widget 的视图文件位于包含了widget文件的 views 子目录之下。这些视图可以通过调用 CWidget::render()渲染,这一点和控制器很相似。唯一不同的是,widget的视图没有布局文件支持。 
同时,view 文件中的 $this 指的是widget 实例而不是 controller 实例。

一.创建Widget

class testWidget extends CWidget

{

public function init()

{

//当视图中执行$this->beginWidget()时候会执行这个方法

//可以在这里进行查询数据操作

}

public function run()

{

//当视图中执行$this->endWidget()的时候会执行这个方法

//可以在这里进行渲染试图的操作,注意这里提到的视图是widget的视图

    //注意widget的视图是放在跟widget同级的views目录下面,例如下面的视图会放置在

    //  /protected/widget/test/views/test.php

$this->render('test', array(

'str'=>'WIDGET视图变量',

));

}

}

二.Widget的视图文件

views视图test.php 引用此变量数据

...

<?php echo $str;?>

....

三.在controll中的views视图中 调用Widget

如果你在/protected/widget/test/下建立了一个名为“testWidget.php”的widget。

在视图中调用需要这样写:

A.

<?php $this->widget('WidgetName'); ?>

B.

<?php $this->beginWidget('application.widget.test.testWidget'); ?>
...可能小部件需要用到这里主体内容...
<?php $this->endWidget(); ?>

C.

<?php $userId = 1; ?>

<?php $this->widget('WidgetName',array('userId'=>$userId)); ?>

参数userId自动映射到Widget类的同名属性,所以在定义Widget时,别忘记了声明该属性。

Yii 之widget的更多相关文章

  1. Yii 通过widget小物件生成添加表单

    通过widget小物件创建添加商品的表单 视图里,表单以endWidget();?>结束 最终效果: 把表单提交过来的信息保存到数据库中去. 补充要点: 密码表单: <?php echo ...

  2. Yii GridView::widget

    GridView::widget文档 http://demos.krajee.com/grid GridView::widget([ 'dataProvider' => $dataProvide ...

  3. yii框架widget和注册asset的例子

    yii框架是一个基于组件的框架,这样代码的重用性就非常的高,如我们想在网站的多个地方调用编辑器,这样我们就可以自定义一个组件,来供我们调用使用 下面以Ueditor组件为例: 1.下载ueditor到 ...

  4. Yii widget使用

    关于widgets,他们在yii中的关系如下 system.web.widgets 系统自带最基本的widget zii.widgets 是基本扩展 zii.widgets.grid 是基本扩展的重要 ...

  5. yii2——自定义widget

    参考资料:http://www.bsourcecode.com/yiiframework2/how-to-create-custom-widget-in-yii2-0-framework/   如何使 ...

  6. yii 核心类classes.php详解(持续更新中...)

    classes.php在yii运行的时候将被自动加载,位于yii2文件夹底下. <?php /** * Yii core class map. * * This file is automati ...

  7. yii2 widget示例

    <?php namespace app\components; use yii\base\Widget; use yii\helpers\Html; class RctReplyWidget e ...

  8. Yii framework 应用总结小窍门(转)

    1. Yii Framework] 如何获取当前controller的名称? 下面语句就可以获取当前控制器的名称了! Yii::app()->controller->id 2. yii 如 ...

  9. 【YII】Yii入门

    1. 入门博客 http://blog.csdn.net/zm2714/article/category/1359776/2 2. 创建运行demo http://blog.csdn.net/zhou ...

随机推荐

  1. Debian&&ubuntu系安装MegaCli

    MegaCli这个命令可以用来监控raid状态.磁盘状况等,最近上了一批ubuntu系统跑openstack,问题是MegaCli在官网上只有rpm格式的包,没有deb的包,但是还是有办法解决的,rp ...

  2. IdentityServer4 密码模式实现

    1.  修改 Config.cs using System.Collections; using System.Collections.Generic; using IdentityServer4.M ...

  3. iOS开发总结——协议代理的认识

    1.前言 自今年5月底正式转iOS之后,天天get新技能,很多技能在脑子里回旋不吐不快,所以,写点东西整理一下.先从协议代理开始. 2.协议方法的声明 @protocol EventMenuBarDe ...

  4. git连接通过ssh连接github

    解决 git连接通过ssh连接github 1. 首先产生一个rsa的私钥和公钥 ssh-keygen -t rsa -C "15950093214@163.com"  //你的g ...

  5. IIS 8 配置错误

    1) ProtocolException: The remote server returned an unexpected response: (405) Method Not Allowed Th ...

  6. (转)MySQL的Grant命令

    [MySQL] - MySQL的Grant命令 来源:http://yingxiong.javaeye.com/blog/451208 本文实例,运行于 MySQL 5.0 及以上版本. MySQL ...

  7. 【树】Path Sum II(递归)

    题目: Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the give ...

  8. python独立环境——virtualenv

    安装: pip3 intall virtualenv   创建独立运行环境: 1. 进入项目文件夹根目录 2. 创建环境 Mac:myproject michael$ virtualenv --no- ...

  9. 数据序列化导读(1)[JSON]

    所谓数据序列化(Data Serialization), 就是将某个对象的状态信息转换为可以存储或传输的形式的过程. 那么,为什么要进行序列化? 首先,为了方便数据存储: 其次,为了方便数据传递. 在 ...

  10. python总结--目录(转)

    python模块   [Python]随机数与随机字符串  举例说明Python的CSV模块   python模块之smtplib: 用python发送SSL/TLS安全邮件   python模块之e ...