陷入CodeIgniter Controller类实现

时间:2011-10-05 21:20:45

标签: php oop codeigniter

我正在使用CodeIgniter重新编码我的网站。这是我第一次使用MVC或任何其他类型的开发模式。我正在使用CI网站上的视频教程来制作游乐场并熟悉系统协议。

我刚遇到第一个问题,它与父类有关。

我正在尝试创建一个博客的第二个教程,并且:

<?php

class Test extends CI_Controller {

    function Test()
    {
        parent::CI_Controller();

        $this->load->scaffolding('entries');
    }

    function index() 
    {
        $data['muck'] = 'test test test';
        $data['kookoo'] = 'howdy howdy hi';
        $data['hi'] = 'holla';
        $data['yo'] = 'fa la la';
        $data['zoom'] = '1234';
        $data['array'] = array('hi','howdy','hey','sup');
        $this->load->view('test_view', $data);
    }

}

?>

当我加载function Test()内没有内容的页面时,我注意到系统找不到“Controller”。我发现本教程使用的是较早版本的CI,而“CI_Controller”是类Controller的正确名称。现在使用上面的代码我收到了这个错误:

Fatal error: Call to undefined method CI_Controller::CI_Controller() in /Users/michaelsanger/Sites/CodeIgniter/application/controllers/test.php on line 7

我已经洗过,我真的不确定为什么它无法定义它。

提前感谢!

1 个答案:

答案 0 :(得分:4)

你正在混合不同版本的东西,1.7主要集中在PHP4风格的类构造上(使用与类相同的方法作为构造函数,而不是php中可用的专用魔术方法__construct()) 5)

另外,请注意最新版本中没有脚手架。你没有说你在使用哪一个,我想V2。如果您使用的是旧版本,1)使用最新版本:) 2)父类只是控制器。

应该是这样的

class Test extends CI_Controller {

     function __construct()
     {
         parent::__construct();

         //$this->load->scaffolding('entries');
     }

     function Test()
     {
      // this will call a method name test, so maps to a URL like Test/test

     }

}

请注意,不需要扩展父控制器,除非您想要“自动加载”库以使其可用于所有方法。

CI以其出色而简单的文档而闻名,所以无论何时使用网络上的教程,特别是如果有点旧(在互联网方面),养成去user_guide的习惯(当您遇到疑问或问题时,它还随安装文件一起发送,用于本地浏览。

例如,查看controllers页面,您很快就会看到您的代码段(以及今天的教程)出现了什么问题

<强>更新

在您设置路线的路线中,映射到控制器(/方法)。 引用更改日志:

  

版本2.0.0

     

发布日期:2011年1月28日Hg标签:v2.0.0

General changes

PHP 4 support is removed. CodeIgniter now requires PHP 5.1.6.
Scaffolding, having been deprecated for a number of versions, has been removed.

所以我不知道你现在用脚手架是什么意思。看看你的路线,CI期望一个名为“scaffolding_trigger”的控制器,它必须被重新路由到控制器“scaffolding”。如果存在任何这些,则会出现404错误。 请选择一个版本并坚持下去,不要混淆!并且不依赖于教程,它们并不总是与最新的变化保持同步。