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.'); } }
显示结果如下: