首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >卡在CodeIgniter控制器类实现中

卡在CodeIgniter控制器类实现中
EN

Stack Overflow用户
提问于 2011-10-06 05:20:45
回答 1查看 1K关注 0票数 1

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

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

我正在学习第二个教程,我想写一个博客,下面是这样的:

代码语言:javascript
运行
复制
<?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()中没有内容的页面时,我注意到系统找不到“控制器”。我发现本教程使用的是较旧版本的CI,并且"CI_Controller“是类控制器的正确名称。现在,使用上面的代码,我得到了这个错误:

代码语言:javascript
运行
复制
Fatal error: Call to undefined method CI_Controller::CI_Controller() in /Users/michaelsanger/Sites/CodeIgniter/application/controllers/test.php on line 7

我已经找过了,真的不确定为什么它不能定义它。

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-06 05:26:28

你混淆了来自不同版本的东西,1.7版本主要关注php4风格的类构造(使用与类同名的方法作为构造函数,而不是php5中提供的专用魔法方法__construct() )。

另外,要注意脚手架在最新版本中不存在。你没有说你用的是哪一个,我猜是V2。如果你使用的是旧版本,1)使用最新的:) 2)父类只是Controller。

应该是这样的

代码语言:javascript
运行
复制
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以其优秀和简单的文档而闻名,所以无论何时你使用网上的教程,特别是如果有点旧(在互联网术语中),养成当你有疑问或问题时去 (它也随安装文件一起提供,用于本地浏览)的习惯。

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

更新:

在您正在设置的路由中,它映射到一个控制器(/method)。引用changelog:

版本2.0.0

发布日期: 2011 -01- 28 Hg Tag: v2.0.0

常规更改删除了对PHP 4的支持。CodeIgniter现在需要PHP5.1.6。Scaffolding已经在许多版本中被弃用,现已被移除。

所以我不明白你说的脚手架是什么意思。看一下您的路由,CI期望一个名为"scaffolding_trigger“的控制器,它必须被重新路由到控制器”搭建“。如果其中任何一个都存在,您就会得到404错误。请选择一个版本并坚持下去,不要混为一谈!不要依赖于教程,它们并不总是最新的变化。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7667887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档