Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2738765
  • 博文数量: 77
  • 博客积分: 10204
  • 博客等级: 上将
  • 技术积分: 5035
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-05 22:13
文章分类
文章存档

2013年(1)

2010年(1)

2009年(17)

2008年(58)

我的朋友

分类:

2010-01-21 21:10:59

今天有人问到这个,今天临下班本子的无线上网竟然不好用了,也没来得急告诉人家,真是。。。

共享出来,省得更多人问相同的问题。

例如:如果网站当中总共有三个模块,管理员模块,会员中心模块,前台模块



1. 使用继承Zend_Controller_Action方法

定义如下:

Zend_Controller_Action |--By_Controller_Admin
                       |
                       |--By_Controller_User
                       |
                       |--By_Controller_Front

在管理员控制器中:


class By_Controller_Admin extends Zend_Controller_Action
{
    public function init()
    {
        //如果未登录则跳转到管理员登录页面
        //
    }
    //更抽象的初始化
}
?>
class Admin_HomeController extends By_Controller_Admin
{
    public function init()
    {
        //如果需要更细节的控制就需要在这里进行重写
    }

}


2. 使用Plugins方法

class By_Controller_Plugin_InitProject extends Zend_Controller_Plugin_Abstract
{
    public function routeShutdown(Zend_Controller_Request_Abstract $request)
    {
         $this->_checkAdminPermit($request);
         // Others
    }
    /**
     * 管理员认证检测
     *
     * @param  Zend_Controller_Request_Abstract $request
     * @return void
     */
    private function _checkAdminPermit(Zend_Controller_Request_Abstract $request)
    {
        $redirector = new Zend_Controller_Action_Helper_Redirector();
        if($request->getModuleName() == 'admin' && $request->getActionName() != 'login')
        {//action必须判断,否则会进入派遣死循环。
            $login = false;
            if(! $login/** 管理员未登录 */)
            {
                /** 跳到管理员登录页面 */
                $redirector->direct('login', 'home', 'admin');
            }
        }
    }
    // Other methods.....
}


阅读(1628) | 评论(1) | 转发(0) |
0

上一篇:Smarty多主题 muti themes

下一篇:

给主人留下些什么吧!~~

chinaunix网友2010-01-21 22:53:05

感谢博主的大力帮助,我今天进步不少。