前段时间和大家讨论过 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:
<!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">
<frame src="<?php echo Yii::app()->request->baseUrl; ?>/index.php/site/left" scrolling="no" noresize="noresize" id="leftFrame" />
<frame src="" name="mainFrame" id="mainFrame" />
</frameset>
</frameset>
<noframes><body>
</body>
</noframes></html>
其它相关的layout和view文件就不提供了,就是简单的html
|