嘿伙计们,我想知道为什么我总是得到无法找到指定的类:Session.php
我正在尝试做的是我有一个控制器,我想继承其他控制器,但是当我调用继承控制器的方法时,它返回无法找到指定的类:Session.php
E.G
控制器A
class controller_a extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->model("model");
}
public function methodA () {
//the pagination codes
}
}
控制器B
include_once (dirname(__FILE__) . "/controller_a.php");
class controller_b extends controller_a {
public function __construct() {
parent::__construct();
$this->load->library("session");
}
public function methodB() {
$a = new controller_a();
$this->load->view("head");
$this->load->view("navbar");
$a->methodA();
$this->load->view("footer");
}
}
我不知道为什么它会一直返回错误。任何人都可以帮我解决这个问题吗?谢谢。
答案 0 :(得分:0)
请在autoload.php
文件夹下的application/config
自动加载会话库。
$autoload['library'] = array('session');
OR
将库加载到父控制器的构造函数中,如下面的代码所示。
class controller_a extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->model("model");
$this->load->library('session');
}
public function methodA () {
//the pagination codes
}
}
希望这可以帮到你。
答案 1 :(得分:0)
问题是因为您尝试在Controller_a
中创建methodB()
。
由于Controller_b
扩展Controller_a
,Controller_a
的所有公开受保护成员都可以Controller_b
使用。当您尝试使用行
Controller_a
时,会出现错误
$a = new controller_a();
这是发生错误的地方。您不需要实例化controller_a
已完成,因为它是父类。
methodB()
应如下所示
public function methodB()
{
$this->load->view("head");
$this->load->view("navbar");
$this->methodA();
$this->load->view("footer");
}
与您的问题无关但最终会导致您痛苦的是您的文件名和类定义。在CI中,文件名和类名必须相同,并且必须具有大写的第一个字母。请注意以下UC First用法。
文件 Controller_a.php 应该定义类
class Controller_a extends CI_Controller
文件 Controller_b.php 应该定义类
include_once (dirname(__FILE__) . "/Controller_a.php");
class Controller_b extends Controller_a
答案 2 :(得分:0)
您不得在config / autoload中加载会话。您已经按照我的步骤解决了
第1步:从https://github.com/alzen8work/CodeIgniter-HMVC下载HMVC结构
第2步:从 $ autoload ['libraries'] = array()
中的application / config / autoload.php中删除会话第3步:打开application / libraries文件夹并打开REST_Controller.php并将行从抽象类REST_Controller扩展CI_Controller 更改为抽象类REST_Controller扩展MY_Controller
第4步:打开application / language / english文件夹并创建一个文件名,例如 rest_controller_lang ,然后在其中粘贴以下代码
<?php
/*
* English language
*/
$lang['text_rest_invalid_api_key'] = 'Invalid API key %s'; // %s is the REST API key
$lang['text_rest_invalid_credentials'] = 'Invalid credentials';
$lang['text_rest_ip_denied'] = 'IP denied';
$lang['text_rest_ip_unauthorized'] = 'IP unauthorized';
$lang['text_rest_unauthorized'] = 'Unauthorized';
$lang['text_rest_ajax_only'] = 'Only AJAX requests are allowed';
$lang['text_rest_api_key_unauthorized'] = 'This API key does not have access to the requested controller';
$lang['text_rest_api_key_permissions'] = 'This API key does not have enough
权限”; $ lang ['text_rest_api_key_time_limit'] ='此API密钥已达到此方法的时间限制'; $ lang ['text_rest_ip_address_time_limit'] ='此IP地址已达到此方法的时间限制'; $ lang ['text_rest_unknown_method'] ='未知方法'; $ lang ['text_rest_unsupported'] ='不支持的协议'; ?>
享受