Codeigniter4 - 找不到控制器或其方法:\App\Controllers\Startup::index

Codeigniter4 - Controller or its method is not found: \App\Controllers\Startup::index

我正在尝试通过以下代码加载视图:

控制器:

<?php namespace App\Controllers;
use CodeIgniter\Controller;

class Startup extends Controller
{
   public function index()
   {
        return view('install/startup');
   }
}

路线:

$routes->setDefaultNamespace('App\Controllers');
$routes->setDefaultController('Startup');
$routes->setDefaultMethod('index');
$routes->setTranslateURIDashes(false);
$routes->set404Override();
$routes->setAutoRoute(true);

加载时出现 404 错误消息:找不到控制器或其方法:\App\Controllers\Startup::index

请看图片 directory structure

根据显示文件夹结构的图片,您的启动控制器位于安装文件夹下,因此您需要将其考虑在内。

您的启动控制器需要...(注意命名空间)

<?php
namespace App\Controllers\Install;
use CodeIgniter\Controller;

class Startup extends Controller {

    public function index() {
        return view('\App\Views\install\startup.php');
    }
}

如果您想将其设置为您的"default",您的路线需要

$routes->setDefaultNamespace('App\Controllers\Install');
$routes->setDefaultController('Startup');

注意:未设置路由定义...即未定义 $routes->get()...

命名空间是你的朋友,所以如果你要把东西放在其他文件夹下,你需要使你的命名空间值匹配。

更新:请注意。我已将 Controllers/install 文件夹更改为 Controllers/Install(使用大写字母 I 进行安装)。案例事项...

所以在你的情况下你会使用

$routes->setDefaultNamespace('App\Controllers\install'); // LOWER CASE install.
$routes->setDefaultController('Startup');

案件很重要。