加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 将函数传递给CodeIgniter中的视图?

发布时间:2020-12-13 22:30:59 所属栏目:PHP教程 来源:网络整理
导读:我可以将函数传递给CodeIgniter中的视图吗?该函数基本上检查是否设置了会话值.例如: public function is_logged(){ $logged = $this-session-userdata('user_id'); if ($logged){ return true; } else { redirect('index'); }} 现在我想把这个功能放在我的
我可以将函数传递给CodeIgniter中的视图吗?该函数基本上检查是否设置了会话值.例如:

public function is_logged(){
    $logged = $this->session->userdata('user_id');

    if ($logged){
        return true;
    } else {
        redirect('index');
    }
}

现在我想把这个功能放在我的一些观点上.那我怎么能把这个功能传递给视图呢?
谢谢.

解决方法

我会采取不同的方法,就像@atno说的那样:你正在使用MVC模式,所以在你的视图中进行这种检查是“逻辑上的”错误以及违反DRY方法.

我会使用我在模型中的函数来检查控制器,并根据结果加载适当的视图:

class Mycontroller extends CI_Controller {

     function index() //just an example
     {
        $this->load->model('mymodel');  
        if($this->mymodel->is_logged())
        {
          $this->load->view('ok_page');
        }
        else
        {
          $this->load->view('not_logged_view');
          //OR redirect('another_page','refresh')
        }
    }
}

在你的模型中:

function is_logged()
 {
    $logged = $this->session->userdata('user_id');

    if ($logged)
    {
        return TRUE;
    } else {
        return FALSE;
    }
 }

如果它需要以编程方式执行,对于控制器的每个方法(如检查登录),您可以检查构造函数内部:

function __construct()
  {
    parent::__construct();
    // check code here
  }

通过这种方式,您可以在调用控制器的任何方法之前进行检查,即在控制器初始化时进行检查.

更新:
使用模型在这里可能有点过分,您只需检查$this->会话返回的内容:

function index() { // or mypage() or whatever

if($this->session->user_data('user_id'))
{
  $this->load->view('ok_page');
}
else
{
  $this->load->view('not_ok_page');
}

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读