2.0 为什么不能扩展Controller呢?
我想实现一个后台的是否登录的验证功能.然后所有的控制器都继承那个有验证功能的控制器..
可就是一直报错..说我扩展的那个class不存在.
请看:http://codeigniter.org.cn/user_guide/general/core_classes.html
你的设置里以 MY_ 开头,而你的扩展是 lcm 开头,不符合手册,仔细看看手册吧。 类名和文件名要相同~ 请看:
你的设置里以 MY_ 开头,而你的扩展是 lcm 开头,不符合手册,仔细看看手册吧。 ...
Hex 发表于 2011-3-16 20:09 http://codeigniter.org.cn/forums/images/common/back.gif
但是我看了那個stblog 他的配置文件也是MY_开头 但是他的类名也没有以MY_开头啊.
而是写的:ST_Controller
和ST_Auth_Controller 而且我换成 class MY_Controller extends CI_Controller{
}
他一样报 MY_Controller 不存在... 我知道什么原因了...
因为我的扩展是放在application/libraries文件夹中
2.0是更新 放在 core中....
而且类名可以随便取...只要文件名按配置文件中的开头写就OK了! 还有一点 构造函数一定是public...不然也报错. 楼主,我出现的情况有点奇怪,
在config.php中是设置用MY_为前缀的。
我扩展的controller代码(放在application/core下)如下:
class MY_Controller extends CI_Controller
{
public function __construct()
{
parent::__construct();
}
public function is_logged_in()
{
$a=12;
return $a;
}
}
在controller中ajia.php中引用它,代码如下:
class Ajia extends MY_Controller
{
public function __construct()
{
parent::__construct();
}
public function index()
{
echo $this->is_logged_in();
$this->load->view('try_view');
}
}
在'try_view'试图中用<?php echo $this->is_logged_in();?>调用
但现实错误:
12
Fatal error: Call to undefined method CI_Loader::is_logged_in() in E:\wamp\www\ci\application\views\try_view.php on line 11
现象是这样的:
1、在ajia.php中可以使用echo $this->is_logged_in();来输出,正面可以使用MY_Controller这个扩展,但不明白的是,为什么是$this->is_logged_in();的写法,而不是$this->controller->is_logged_in();的写法,因为在其他核心类中都是使用$this->核心类名(小写)->方法的形式;
2、在试图中这个输出该怎么写,还是echo $this->is_logged_in();这样???? 楼主,我出现的情况有点奇怪,
在config.php中是设置用MY_为前缀的。
我扩展的controller代码(放在applica ...
wsluozefeng 发表于 2011-3-20 15:15 http://codeigniter.org.cn/forums/images/common/back.gif
你在视图中调用扩展类 肯定不行了.
他没有在类中了.
他的load view是加载了一个视图.切换了场景了.
所以你要用到神器:$CI=&get_instance();
然后在 echo $CI->is_logged_in();
就OK啦. 我也是跟你一样的情况,感谢你的发现 我的问题也解决了
但是,帅哥 ,你那是怎么报错呢,我只是页面什么都没有~
页:
[1]
2