分享:基于YIi的三栏frameset框架后台管理页面的实现

前段时间和大家讨论过 yii后台管理页面结构实现方法的问题,现在我的项目接近收尾,向大家分享一下我的后台管理页面实现,

就是那种常见的frameset三栏布局,主要代码如下:

SiteController.php





<?php


class SiteController extends CController

{

	/**

	 * Declares class-based actions.

	 */

	public function actions()

	{

		return array(

			// captcha action renders the CAPTCHA image

			// this is used by the contact page

			'captcha'=>array(

				'class'=>'CCaptchaAction',

				'backColor'=>0xEBF4FB,

			),

		);

	}


	/**

	 * This is the default 'index' action that is invoked

	 * when an action is not explicitly requested by users.

	 */

	public function actionIndex()

	{

		// renders the view file 'protected/views/site/index.php'

		// using the default layout 'protected/views/layouts/main.php'


		

//注意运行yiic shell前需要改回$this->render('index'); 否则无法进入shell

		$this->render('index');

	}


	/**

	 * Displays the contact page

	 */

	public function actionContact()

	{

		$contact=new ContactForm;

		if(isset($_POST['ContactForm']))

		{

			$contact->attributes=$_POST['ContactForm'];

			if($contact->validate())

			{

				$headers="From: {$contact->email}\r\nReply-To: {$contact->email}";

				mail(Yii::app()->params['adminEmail'],$contact->subject,$contact->body,$headers);

				Yii::app()->user->setFlash('contact','Thank you for contacting us. We will respond to you as soon as possible.');

				$this->refresh();

			}

		}

		$this->render('contact',array('contact'=>$contact));

	}


	/**

	 * Displays the login page

	 */

	public function actionLogin()

	{

		$form=new LoginForm;

		// collect user input data

		if(isset($_POST['LoginForm']))

		{

			$form->attributes=$_POST['LoginForm'];

			// validate user input and redirect to previous page if valid

			if($form->validate())

				$this->redirect(Yii::app()->user->returnUrl);

		}

		// display the login form

		$this->layout='login';

		$this->render('login',array('form'=>$form));

	}


	/**

	 * Logout the current user and redirect to homepage.

	 */

	public function actionLogout()

	{

		Yii::app()->user->logout();

		$this->redirect(Yii::app()->homeUrl);

	}

	/**

	 * 管理框架页

	 */

	public function actionDefault()

	{

		if(Yii::app()->user->isGuest){

			$this->redirect(array('site/login'));

		}

		else{

			$this->renderPartial('default');

		}

	}

    /**

	 * 管理框架页 Head

	 */

	public function actionHead()

	{

		if(Yii::app()->user->isGuest){

			$this->redirect(array('site/login'));

		}

		else{

			$this->renderPartial('head');

		}

	}

    /**

	 * 管理框架页 left

	 */

	public function actionLeft()

	{

		if(Yii::app()->user->isGuest){

			$this->redirect(array('site/login'));

		}

		else{

			Yii::app()->getClientScript()->registerCoreScript('jquery');

			$this->layout='left';

			$this->render('left');

		}

	}

}






views/site/default.php

[html]

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title></title>

</head>

<frameset rows="92," cols="" frameborder="no" border="0" framespacing="0">

<frame src="<?php echo Yii::app()->request->baseUrl; ?>/index.php/site/head" name="topFrame" scrolling="no" noresize="noresize" id="topFrame" />

<frameset cols="215,*" frameborder="no" border="0" framespacing="0">

&lt;frame src=&quot;&lt;?php echo Yii::app()-&gt;request-&gt;baseUrl; ?&gt;/index.php/site/left&quot; scrolling=&quot;no&quot; noresize=&quot;noresize&quot; id=&quot;leftFrame&quot; /&gt;


&lt;frame src=&quot;&quot; name=&quot;mainFrame&quot; id=&quot;mainFrame&quot; /&gt;

</frameset>

</frameset>

<noframes><body>

</body>

</noframes></html>

[/html]

其它相关的layout和view文件就不提供了,就是简单的html

感谢分享.

很好,很强大

很不错。。。用在后台管理非常有价值。。。

太棒了,谢谢Lz分享

不错,感谢分享,后台使用frameset框架很适合,目前畅K网(changktv.com)没有使用这个,下一个项目考虑使用这个结构.

我收藏了!有空我按你方法学习一下!再做一个相关的模板的出来给大家!

my label ^_^