怎样在Yii Framework中显示静态页 [ 新手入门 ]
在web应用中,我们经产更需要显示静态页,如“关于我们”等,这些文件通常是静态页,通常有如下几种处理方法:
1.把独立的html文件存在Web服务器能直接访问的目录下。这种方案的缺点是很难维护网页布局以及和动态页的连接.
2.可以自己写action赖渲染view文件处理每一个静态页,这样解决了layout问题,但是为每一个页写一个单独的action,特别是这个action仅仅处理一个静态文本,非常麻烦。
3.使用Yii内置的一个CViewAction来服务所有这些页。
下面就介绍第三种方法: 首先,建立以个controller类如DocController,覆盖actions方法
public function actions()
{
return array(
'page'=>array(
'class'=>'CViewAction',
),
);
}
根据官方指南,以上代码声明了一个外部action类CViewAction.
然后,生成目录 protected/views/site/pages
.
最后,在该目录下存储一个文件叫about.php
,内容为:"about this site"
,此时这些页将使用应用的默认布局文件。因此该文件仅仅描述本页相关内容。
http://www.yourhost.com/index.php?r=doc/page&view=about
如果有很多静态页,可以将其放在子目录里,假设有一个有静态页在 protected/views/site/pages/help/contact.php
:
http://www.yourhost.com/index.php?r=site/page&view=help.contact
当然,我们也可以定制CViewAction
的行为,察看API文档了解更多有关于CViewAction
共 2 条回复
-
ck86631570 回复于 2011-12-08 17:25 举报
问一个关于 action覆盖的问题。
通过return array('admin'=>'application.controllers.test.AdminAction')
之后
原先的$this->render()
,
怎么表示呢 -
我新建了个
QuestionController
,public function actions() { return array( 'language'=>array( 'class'=>'CViewAction', ), ); }
把page改成了language,在views下新建了一个questions文件夹,然后把我的视图文件java.php放进questions文件夹里。之前
$this->widget('zii.widgets.CMenu',array( 'items'=>array( array('label'=>'Java', 'url'=>array('/question/language', 'view'=>'java')), ), ));
这一段已经在前一个视图文件中写好,但最后还是
Error 404 The requested view "java" was not found.
我明明已经放入了视图,却说没找到,为什么?
@巡洋舰
╃巡洋艦㊣ 北京
最后登录:5小时前
在线时长:1674小时13分
- 粉丝1369
- 金钱76368
- 威望845
- 积分101558