首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >集成CodeIgniter库(如坦克auth)

集成CodeIgniter库(如坦克auth)
EN

Stack Overflow用户
提问于 2013-05-09 00:11:14
回答 1查看 1.5K关注 0票数 0

我做了很多研究,但没有找到令人满意的答案。

我应该如何使用CodeIgniter库,如坦克豪斯?我已经找到了一些方法,但它们似乎都有些平淡无奇:

  1. 我是否主要按原样使用控制器,根据需要添加控制器函数/包括样式?
  2. 我是否使用控制器作为示例来建模我自己的后续,依赖于对$this-> tank _auth的调用以及包含在tank中的视图?
  3. 或者,我是否用坦克-auth控制器扩展MY_Controller,然后将其扩展到任何需要身份验证的特定控制器,只需调用父级:login()(或寄存器()、activate()等)?

第一个选项似乎是最好的,但似乎很难避免复制大量代码(如果我想要一个登录表单,但不想重定向到/auth/ login,会发生什么情况?)

第二种选择也有同样的问题,但更糟。每次我想使用login_form视图时,我都需要包含坦克auth控制器登录函数的逻辑,对吗?

对我来说,最后一个看起来很烦人,似乎是反MVC的,但也许我错了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-09 02:04:17

查看http://philsturgeon.co.uk/blog/2010/02/CodeIgniter-Base-Classes-Keeping-it-DRY

伪代码(参见链接--非常好的例子):

application/config/config.php

代码语言:javascript
复制
$autoload = array('tank_auth');

// add this to the bottom of config.php as per the directions in the link
function __autoload($class)
{
     if(strpos($class, 'CI_') !== 0)
     {
        @include_once( APPPATH . 'core/'. $class . EXT );
     }
}

application/core/Private_Controller.php

代码语言:javascript
复制
class Private_Controller extends CI_Controller
{
    function __construct()
    {
        parent::__construct();

        if(! $this->tank_auth->is_logged_in()){
            redirect('auth/login');
        }
    }
}

控制器

代码语言:javascript
复制
 class PrivateStuff extends Private_Controller {
     function index() {
         echo "you are logged in";
     }
 }

-

代码语言:javascript
复制
http://example.com/index.php/privatestuff/
>you are logged in

至于视图,您可以使用库附带的视图,自定义视图,或者为您创建自己的视图。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16452279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档