CJuiTabs 顯示分頁UI組件,和Yii Framework 開發教程(17) UI 組件 TabView示例功能類似,它封裝了 JUI tabs插件。
前基本用法如下:
<?php $this->widget('zii.widgets.jui.CJuiTabs', array( 'tabs'=>array( 'Static tab'=>'Static content', 'Render tab'=>$this->renderPartial('pages/_content1',null,true), 'Ajax tab'=>array('ajax'=>array('ajaxContent','view'=>'_content2')), ), 'options'=>array( 'collapsible'=>true, 'selected'=>1, ), 'htmlOptions'=>array( 'style'=>'width:500px;' ), )); ?>
顯示了三個頁面不同內容顯示方法,Static Tab顯示一個靜態內容,Render Tab使用Partial渲染一個頁面 ,而Ajax Tab則通過AJAX顯示一個頁面,注意後面兩個需要在SiteController中定義Actions 如下:
public function actions() { return array( 'page'=>array( 'class'=>'CViewAction', ), // ajaxContent action renders //"static" pages stored under 'protected/views/site/pages' // They can be accessed via: //index.php?r=site/ajaxContent&view=FileName 'ajaxContent'=>array( 'class'=>'application.controllers.AjaxViewAction', ), ); }
其中AjaxViewAction為一自定義ViewAction,為CViewAction的子類,可以顯示靜態頁面,其定義如下:
class AjaxViewAction extends CViewAction { private $_viewPath; public function run() { if(Yii::app()->request->isAjaxRequest) { $this->resolveView($this->getRequestedView()); $controller=$this->getController(); $controller->renderPartial($this->view, null, false, true); } else throw new CHttpException(400,'Invalid request. Please do not repeat this request again.'); } }
顯示結果如下:
本例下載:http://www.imobilebbs.com/download/yii/JuiProgressBarDemo.zip