YII中创建自己的widget

本文介绍如何在Yii框架中创建自定义Widget,并演示了具体的实现步骤及如何在视图中调用这些Widget。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.构建自己的widget testWidget.php

在目录 /protected/widget/test/testWidget.php

 

<?php

    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视图变量',
            ));
        }
}
 

2.创建对应的widget view

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

 

<?php
    echo $str;
 

3.调用自定义的widget

 

<div class="msg">
<?php echo CHtml::encode($message); ?>
</div>

自定义widget开始
<div>
<?php
    $this->beginWidget('application.widget.test.testWidget');
?>
</div>


<?php $this->endContent(); ?>
</br>自定义widget结束</br>


<hr>
<?php
    Yii::import('application.mylib.MyTestClass');
    
    echo Yii::app()->controller->id;
    
    echo '<hr>';
    
    echo MyTestClass::getName();
?>

 

ps:

在控制器render视图的时候,如果不想用默认的layout,可以直接使用如下方式

 

$this->renderPartial('test',array());
 

 

要创建一个新的挂件(widget),我们主要是要继承两个方法:CWidget::init()和 CWidget::run(), 
CWidget::init 调用是发生在我们使用 $this->beginWidget 将挂件插入到一个view里面, 
CWidget::run 调用是发生在我们使用 $this->endWidget 这个方法的时候。 
如果我们想捕捉和处理两者之间的方法核查办上显示的内容,我们可以在CWidget::init开始输出缓冲,然后在CWidget::run中检索缓冲输出 并作进一步处理。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值