【问题标题】:What is required to call a controller in Codeigniter?在 Codeigniter 中调用控制器需要什么?
【发布时间】:2012-07-10 04:31:13
【问题描述】:

我正在使用 Codeigniter 创建一个简单的博客。但是我在调​​用默认控制器之外的另一个控制器时遇到了麻烦。

以下 URL 将我带到我的 config/routes.php 中指定的默认控制器。

blog/index.php

根据文档,只需附加保存在 controllers/ 中的另一个控制器的名称即可:

blog/index.php/blog_login

这是我的控制器类,名为 blog_login.php:

class Blog_login extends CI_Controller {

    public function index()
    {
        echo 'It works!';
    }
}

但是这样做会引发 404 错误,这让我觉得我错过了一些东西。在尝试访问不同的控制器之前,我还应该配置其他东西吗?

【问题讨论】:

  • 你添加到路由了吗?
  • 他不需要添加到路由中。 application/controllers/blog_login.php 应该可以通过 blog/index.php/blog_login 访问
  • @Steven Lu 就是这样,我在全新安装的 Codeigniter 上执行此操作,以确保我可以在最简单的条件下执行此操作。
  • @JimJohnson:确保您通过添加以下结构正确扩展CI_Controllerfunction __construct(){ parent::__construct(); }
  • @Colin 我有一个正确编写的构造函数,但我选择不将它包含在这个问题的代码中。有符号链接是否与我的路由问题有关?

标签: php codeigniter http-status-code-404


【解决方案1】:

http://codeigniter.com/user_guide/general/routing.html 仔细阅读,再清楚不过了。

根据文档,只需附加另一个名称 只需要保存在 controllers/ 中的控制器

这不是真的。如果你想调用另一个控制器'Blog_login',你只需将控制器的名称作为url的第一段:

domain.com/index.php/blog_login

这永远行不通:

blog/index.php/blog_login

Index.php(除非您通过 .htaccess 将其删除)始终紧跟在您的 domain.com 之后

最后,除非你做一些非标准的事情,否则你不需要指定路线。所以

domain.com/index.php/blog_login - 在您的 Blog_login 控制器中调用 index() 函数 domain.com/index.php/blog - 在你的博客控制器中调用 index() 函数 domain.com/index.php/blog/search - 在您的博客控制器中调用 search() 函数。

以上示例都不需要在 routes.php 中添加条目

【讨论】:

  • 是的,文档非常清楚。事实证明,在我安装了捆绑软件后,我的 textmate 没有正确保存文件。我一直都做对了>.
  • @JimJohnson,那么最好将问题全部结束,因为基本上没有问题。无需人们尝试解决它。​​
【解决方案2】:

当你打电话时:

blog/index.php/blog_login

您实际上是在“博客”控制器中调用了一个名为“blog_login”的方法。如果要调用另一个控制器,它必须具有以下结构:

controller_name/controller_method

所以,如果你想调用你的 blog_login 控制器,只需像这样调用它:

blog_login/

注意:有时需要将 base_url() 添加到您的 URL 以使 CI 正确理解 URL。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-29
    • 1970-01-01
    相关资源
    最近更新 更多