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