Php Codeigniter:调用自定义库后,无法访问默认库
我需要验证登录数据,因此我创建了一个自定义库,它在其中检查用户类型并相应地重定向登录页面 一切正常,但问题是我在控制器内尝试访问的所有其他库都无法访问,我必须在访问自定义库之前添加这些库Php Codeigniter:调用自定义库后,无法访问默认库,php,codeigniter,Php,Codeigniter,我需要验证登录数据,因此我创建了一个自定义库,它在其中检查用户类型并相应地重定向登录页面 一切正常,但问题是我在控制器内尝试访问的所有其他库都无法访问,我必须在访问自定义库之前添加这些库 $this->access->verify(array('admin')); 这很有效 public function __construct() { parent:: __construct(); $this->load->model("De
$this->access->verify(array('admin'));
这很有效
public function __construct()
{
parent:: __construct();
$this->load->model("Delivery_agents_model");
$this->load->helper('form');
$this->load->library('form_validation');
$this->load->library('access');
}
但这不起作用
<?php if( ! defined('BASEPATH')) exit('No direct script access allowed');
class Access extends CI_Controller {
public function verify($access)
{
if ( (array) $access !== $access )
{
switch ($access)
{
case 'admin':
if (! $this->session->userdata('admin_logged_in'))
{
redirect(base_url('admin/login'));
}
break;
case 'delivery_agent':
if (! $this->session->userdata('delivery_agent_logged_in'))
{
redirect(base_url('delivery_agent/login'));
}
break;
}
}
else
{
$logged_in = FALSE;
foreach ($access as $access_type)
{
switch ($access_type)
{
case 'admin':
if ($this->session->userdata('admin_logged_in'))
{
$logged_in = TRUE;
}
break;
case 'delivery_agent':
if ($this->session->userdata('delivery_agent_logged_in'))
{
$logged_in = TRUE;
}
break;
}
}
if (! $logged_in)
{
switch ($access[0])
{
case 'admin':
redirect(base_url('admin/login'));
break;
case 'delivery_agent':
redirect(base_url('delivery_agent/login'));
break;
}
}
}
}
}
这是我得到的错误
A PHP Error was encountered
Severity: Notice
Message: Undefined property: Delivery_agents::$form_validation
Filename: controllers/delivery_agents.php
Line Number: 104
Fatal error: Call to a member function set_rules() on a non-object in /var/www/project/application/controllers/delivery_agents.php on line 104
问题是您正在扩展库中的CI_控制器。因为如果您的库扩展了CI_控制器。这意味着您实际上是在扩展控制器的功能 使用 而不是
class Access extends CI_Controller {
并将以下构造函数添加到库中
function __construct()
{
$this->ci =& get_instance();
}
然后,在添加构造函数之后,您可以在库中使用$this->ci
而不是$this
。例如:
$this->ci->session->userdata('admin_logged_in')
有关详细信息谢谢!完美答案。最初我添加了$this->ci=&get_instance();但是在构造函数中没有,所以它不起作用。
$this->ci->session->userdata('admin_logged_in')