`
hudeyong926
  • 浏览: 2033039 次
  • 来自: 武汉
社区版块
存档分类
最新评论

Yii 自定义Widget Portlet

 
阅读更多

能够重用的小的代码模块,不涉及业务逻辑的,用在跟视图相关的方面比较多,一般把Sidebar,Navigation,Page,JS控件(上传,日历)封装成Widget,但Portlet生成的html系统会自动套2层div在html外面,改变了页面样式,可能操作页面样式布局js等失效

下面以一个随机广告图片为例说明Yii中Widget的用法
1. 调用Widget

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

 或者

<?php $widget=$this->beginWidget('path.to.WidgetClass'); ?>
...可能会由小物件获取的内容主体...
<?php $this->endWidget(); ?>

 也可以传参到Widget类

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

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

2. 创建Widget
自定义Widget类要继承CWidget,覆盖方法run

<?php
class BannerMagic extends CWidget {
    public function run(){
    }
}

或者:

class MyWidget extends CWidget {
    public function init() {
        // 此方法会被 CController::beginWidget() 调用
    }
     public function run() {
        // 此方法会被 CController::endWidget() 调用
    }
}

 下面是是BannerMagicWidget实现,存储到protected\components\BannerMagicWidget.php

<?php class BannerMagicWidget extends CWidget {
   public function run() {
     $random = rand(1,3);
     if ($random == 1) {
       $advert = "advert1.jpg";
     }  else if ($random == 2) {
       $advert = "advert2.jpg";
     }  else {
       $advert = "advert3.jpg";
     } 
     $this->render('bannermagic',array(
       "advert"=>$advert,
     ));
   }
}

 对应的view文件可能的内容如下:

<img src="images/adverts/<?php echo $advert; ?>" alt="whatever" />

存储到protected\components\views\bannermagic.php

 

3. 调用该Widget

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

 

CPortlet继承自CWidget。这意味portlet作为一个widget,可以在用widget()方法在页面中插入.它覆盖了CPortlet 类的 renderContent() 方法等

 protected\components\RecentComments.php  (1)

<?php

Yii::import('zii.widgets.CPortlet');

class RecentComments extends CPortlet
{
	public $title='Recent Comments'; //title 
	public $maxComments=10;

	public function getRecentComments()
	{
		return Comment::model()->findRecentComments($this->maxComments);
	}

	protected function renderContent()
	{
		$this->render('recentComments'); //模板文件
	}
}

protected\components\views\recentComments.php   模板文件(2)

<ul>
	<?php foreach($this->getRecentComments() as $comment): ?>
	<li><?php echo $comment->authorLink; ?> on
		<?php echo CHtml::link(CHtml::encode($comment->post->title), $comment->getUrl()); ?>
	</li>
	<?php endforeach; ?>
</ul>

 调用方法 (3)

<?php $this->widget('RecentComments', array('maxComments'=>Yii::app()->params['recentCommentCount'],
)); ?>

 

 

 

 
分享到:
评论

相关推荐

    yii 自定义widget地址联动

    自定义Widget是扩展Yii功能和提高代码复用性的重要方式。本文将深入探讨如何在Yii框架中实现自定义Widget以及实现地址联动的功能。 一、Yii Widget基础 在Yii中,Widget是基于MVC(模型-视图-控制器)设计模式的,...

    yii中widget的用法

    本文实例讲述了yii中widget的用法。分享给大家供大家参考。具体分析如下: WIDGET定义很简单,如果你在/protected/widget/test/下建立了一个名为“testWidget.php”的widget。 在视图中调用需要这样写: 复制代码 ...

    yii2框架中使用下拉菜单的自动搜索yii-widget-select2实例分析

    在Yii2框架中实现带有自动搜索功能的下拉菜单,通常我们会利用第三方的扩展库Yii-Widget-Select2。通过使用这一组件,我们可以为用户提供更为灵活和动态的界面交互方式。本文将详细介绍如何在Yii2框架中使用Select2...

    Yii 自定义Controller

    自定义Controller在Yii中是一项关键功能,它允许开发者根据项目需求扩展框架的基本功能,实现更灵活、更具针对性的控制逻辑。在这个主题中,我们将深入探讨如何在Yii框架中自定义Controller。 首先,Controller在...

    yii2中的rules 自定义验证规则详解

    `rules` 是 Yii2 中用于定义模型(Model)验证规则的关键特性,它允许我们自定义复杂的验证逻辑。 在描述的场景中,我们需要处理两个字段 A 和 B。如果 A 的值为 1,则 B 必须有值;而当 A 的值为 2 时,B 可以为空...

    yii-ke-widget

    "yii-ke-widget" 是专门为Yii框架设计的一个集成 KindEditor 的 Widget。 KindEditor 是一个功能强大的开源在线文本编辑器,支持多种浏览器,如 Chrome、Firefox、Safari、IE6 等,提供了丰富的富文本编辑功能,...

    YII2框架自定义全局函数的实现方法小结

    在YII2框架中实现自定义全局函数主要有几种方法,下面将详细介绍每种方法的实现步骤和注意事项。 方法一:在入口文件直接定义全局函数 这种方法比较直接,无需新建文件,直接在入口文件中定义需要的函数。首先定义...

    Yii中创建自己的Widget实例

    `的方式引入已经存在的Yii内置Widget或者用户自定义的Widget。这里`WidgetName`是内置Widget的名称或者用户自定义Widget的类名。还可以通过数组方式传递参数到Widget类,例如`$this-&gt;widget('WidgetName', array('...

    YII框架实现自定义第三方扩展操作示例

    本文实例讲述了YII框架实现自定义第三方扩展操作。分享给大家供大家参考,具体如下: cat.php &lt;?php /** * Created by PhpStorm. * Date: 2016/5/25 * Time: 15:23 */ namespace vendor\animal; use \yii\...

    yii2-custom-errorhandler:Yii 2.x应用程序中的自定义错误处理

    Yii 2.x应用程序中的自定义错误处理 该模块允许您将其处理挂在Exceptions上。 ###何时需要###例如,捕获“危险”的用户操作。 发生错误时,您可以记录数据并跟踪特定用户或IP的ForbiddenHttpException或...

    Yii2实现自定义独立验证器的方法

    在Yii2框架中实现自定义独立验证器是一个非常实用的技能,它能够帮助开发者根据特定需求定制验证逻辑。本文档介绍了如何创建和使用自定义独立验证器的详细方法,并结合实例进行了分析,以供需要的读者参考。 首先,...

    Yii2使用Bootbox插件实现自定义弹窗

    Bootbox.js 是一个小型的 JavaScript 库用来创建简单的可编程对话框,基于 Twitter 的 Bootstrap 开发。今天我们就来研究下,如何使用bootbox插件来实现自定义弹窗。

    yii1.1版本资料整理

    6. 支持插件widget(portlet):Yii通过widget插件系统允许开发者方便地添加和维护应用程序中的部件,从而实现丰富的用户界面。 二、Yii1.1核心组件与功能: 1. CRUD生成器Gii:Gii是一个强大的工具,提供了代码生成...

    Yii2框架自定义验证规则操作示例

    Yii2框架自定义验证规则的知识点包括以下几个部分: 1. 验证规则的作用:在Yii2框架中,验证规则用于确保用户输入的数据满足特定的要求和格式。Yii2提供了一套灵活的验证机制,允许开发者自定义验证规则以处理各种...

    yii2-widget-rating:一个Yii2小部件,用于简单但功能强大的引导星级评分插件,并支持分数评分(从yii2-widgets拆分子仓库)

    yii2-widget-rating StarRating小部件是Krajee设计的 JQuery插件的包装。 该插件是用于Bootstrap的简单但功能强大的JQuery星级评分插件。 着重开发纯CSS-3样式来呈现控件。 注意:此扩展是的子拆分。 自2014年11月8...

    yii2-dropdown-content-input:带有yii2自定义内容的下拉字段

    带有yii2自定义内容的下拉字段 这个小部件允许您将任何内容嵌入到下拉列表中,例如GridView。 为此,您需要在容器小部件(“ containerOptions”)的设置中传输html内容,其中下拉菜单的每个选项均具有类“ item”和...

Global site tag (gtag.js) - Google Analytics