【问题标题】:How can I fix this "Object not found!" error in CodeIgniter-4?我该如何解决这个“找不到对象!” CodeIgniter-4 中的错误?
【发布时间】:2020-07-25 20:24:58
【问题描述】:

我检查了控制器名称和方法名称,但仍然显示“在此服务器上找不到请求的 URL。如果您手动输入了 URL,请检查您的拼写并重试。”

我已经尝试了下面给出的这个网址并得到了这个错误:

http://localhost/framework/index.php/helloworld
http://localhost/framework/helloworld/index

Controller名下的文件为:Helloworld.php

<?php namespace App\Controllers;
use CodeIgniter\Controller;
class Helloworld extends CI_Controller
{
public function index()
{
echo 'Hello World!';
}

enter image description here

【问题讨论】:

  • 重新阅读你在 use 声明中的内容......它为你的扩展类“使用 CodeIgniter\Controller”......但仔细观察你错误地使用了 CI_Controller,它是如此 CI 3ish。

标签: php codeigniter xampp codeigniter-4


【解决方案1】:

改变

class Helloworld extends CI_Controller

class Helloworld extends Controller

在 CI4 中 CI_Controller 重命名为 Controller

【讨论】:

  • 控制器名称已更正,但仍然出现致命错误:第 3 行的 C:\xampp\htdocs\ci\app\Controllers\Helloworld.php 中找不到类 'App\Controllers\Controller'跨度>
  • @MonayemIslam 请看我的回答。您已删除 use 语句。您需要了解这是如何工作的。
【解决方案2】:

如果你在不使用 htaccess 的情况下尝试 Codeigniter 4,你应该像这样调用

http://localhost/framework/public/helloworld

或者你应该使用这个命令运行 C​​odeigniter

php spark serve 

然后去浏览器检查http://localhost:8080

您应该从这里学习 codeigniter 4 的基础知识 How to Use codeigniter 4

希望对你有帮助

【讨论】:

    【解决方案3】:

    请在执行以下更改后尝试 -

    • 删除 use 声明。
    • 将 BaseController 扩展为 CI_Controller 在 CI4 中不可用。
    • 返回你想在屏幕上显示的内容。

      <?php namespace App\Controllers;
      
       class Helloworld extends BaseController {
         public function index() {
             return 'Hello World!';
         }
       }
      

    【讨论】:

    • 说“您需要运行 Spark Server 才能运行项目”并不完全正确。这是一个选择。你读过手册吗:)
    • @AlokMali 谢谢。它适用于 BaseController 并为 Controller 获取致命错误。您能否解释一下为什么我会收到 Controller 的致命错误?
    • 你有合适的Controller使用说明吗?还是您删除了它?
    • 对不起 AlokMali,这是针对@MonayemIslam 关于他使用 Controller 而不是 BaseController 的问题。在这种情况下,之前使用 CodeIgniter\Controller 需要它才能工作。您的回答将其更改为使用 BaseController。
    • @MonayemIslam,我找不到,为什么你会遇到这个问题。 TimBrownlaw,请你回答一下。
    【解决方案4】:

    在大多数 cmets 中,声明您所要做的就是将您的 CI_Controller 重命名为简单的 ole Controller(根据 CI 4 User guide ) 以及您在“使用”中声明的内容。

    所以你会有

    <?php namespace App\Controllers;
    
    use CodeIgniter\Controller; // This is what you are "use"ing
    
    class Helloworld extends Controller {  // And this is where you are "use"ing it
        public function index() {
            echo 'Hello World!';
        }
    }
    

    看到区别了吗?

    【讨论】:

      猜你喜欢
      • 2013-11-15
      • 2023-02-06
      • 2020-09-10
      • 2021-06-28
      • 2018-03-09
      • 2016-07-21
      • 2016-09-09
      相关资源
      最近更新 更多