如何使用Ion Auth嵌入而不是重定向到表单?

时间:2014-04-11 08:44:15

标签: codeigniter

我只是尝试 Ion Auth 库,看起来真的很棒。

我有主控制器

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Main extends CI_Controller {

        //Main page
    public function index() {
                $this->view_data['header'] = $this->load->view('main/header.php', '', true);
                $this->view_data['footer'] = $this->load->view('main/footer.php', '', true);
        $this->load->view('main/index', $this->view_data);                
    }
}

在主视图中,我有一个指向/login

的链接

登录控制器看起来像这样

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
require_once(APPPATH.'controllers/secure.php');
class Login extends Secure {

        //Login page
    public function index() {
                $this->load->library('ion_auth');
                $this->view_data['header'] = $this->load->view('main/header.php', '', true);
                $this->view_data['footer'] = $this->load->view('main/footer.php', '', true);
                $this->load->view('login/index', $this->view_data);                
    }
}

登录控制器扩展了安全控制器,我有一个执行机制来检查用户是否登录。

安全控制器:

<?php defined('BASEPATH') OR exit('No direct script access allowed');

//If any class extends with this class, do some stuff to show loginform etc
class Secure extends CI_Controller {
  function __construct() {
        parent::__construct();
        $this->load->library('ion_auth');

        //
        // Require members to be logged in. If not logged in, redirect to the Ion Auth login page.
        //
        if( ! $this->ion_auth->logged_in()) {
          redirect(base_url() . 'auth/login');
        }
    }
}

工作正常,并正确地重定向到用户的实际登录页面。

但我不希望它被重定向,而是嵌入作为main / index的一部分

而不是重定向我会返回auth登录模板,类似

return $this->load->view('auth/login', {data used for loginform}, true);

有没有办法实现这个目标?或者我是否必须在安全控制器中创建特定功能,并根据这些函数返回的内容我将显示不同的模板?

我试过这个: * 安全控制器 *

<?php defined('BASEPATH') OR exit('No direct script access allowed');

//If any class extends with this class, do some stuff to show loginform etc
class Secure extends CI_Controller {
    public function __construct() {
        parent::__construct();
        $this->load->library('ion_auth');
    }

    public function isLoggedIn() {
        if( ! $this->ion_auth->logged_in()) {                        
                $this->view_data['identity'] = '';
                $this->view_data['message'] = '';
                $this->view_data['password'] = '';
                return $this->load->view('auth/login', $this->view_data, true);   
        }
        else {
            return '';
        }

    }
}

登录控制器

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
require_once(APPPATH.'controllers/secure.php');
class Login extends Secure {

        //Login page
    public function index() {
                $this->load->library('ion_auth');
                $this->view_data['header'] = $this->load->view('main/header.php', '', true);
                $this->view_data['footer'] = $this->load->view('main/footer.php', '', true);

                $this->view_data['loginform'] = $this->isLoggedIn();

                $this->load->view('main/index', $this->view_data);                
    }
}

然后我只看到输入字段和复选框,标签上没有文字......

任何人都可以指出我应该选择哪个方向来实现这个目标吗?请问我是否不清楚我的问题。

1 个答案:

答案 0 :(得分:1)

您可以在其他视图中加载视图。这是另一个应该有帮助的答案:

Best method of including views within views in CodeIgniter