How to display static pages in Yii?

You are viewing revision #2 of this wiki article.
This version may not be up to date with the latest version.
You may want to view the differences to the latest version or see the changes made in this revision.

« previous (#1)next (#3) »

In a Web application, we often need to display pages like "about this site", "legal information", whose content are mostly static. There are several approaches to deal with this kind of pages.

  • We can store these pages in individual HTML files so that the Web server will directly serve them to end users without incurring PHP. The drawback is that it is a hassle to maintain the common layout shared by these static pages and the other dynamic pages.

  • We can write an action and render the corresponding view file for each of the static pages. This resolves the layout problem, but it is too much trouble to write an action for each page, especially when the only work the action does is to render a view.

  • We can use a single [CViewAction] to serve all these pages. Below we will show you how this approach works.

First, in the default SiteController (or other controller if you like), override the actions() method as follows,

public function actions()
{
	return array(
		'page'=>array(
			'class'=>'CViewAction',
		),
	);
}

According to the Guide, the above code declares an external action named page whose class is [CViewAction].

Second, create a folder protected/views/site/pages.

Third, save each static page as a PHP file under this folder. For example, we can save the "about this site" page as about.php. Note, these pages will use the application's default layout. Therefore, only the main content needs to be saved in each file.

We are done! To access a static page, e.g., the about page, we can use the following URL:

http://www.example.com/index.php?r=site/page&view=about

To beautify this URL, we may use the approach described in the Guide.

If we have many static pages, we may organize them into sub-folders under protected/views/site/pages. We can use the following URL to access a page that is stored as protected/views/site/pages/help/contact.php:

http://www.example.com/index.php?r=site/page&view=help.contact

We may customize [CViewAction] if you do not like the above setup. For more details, please check the API documentation of [CViewAction].

14 0
13 followers
Viewed: 85 141 times
Version: Unknown (update)
Category: Tutorials
Written by: qiang
Last updated by: resurtm
Created on: Mar 18, 2009
Last updated: 11 years ago
Update Article

Revisions

View all history

Related Articles