【问题标题】:Codeigniter4 - Controller or its method is not found: \App\Controllers\Startup::indexCodeigniter4 - 找不到控制器或其方法:\App\Controllers\Startup::index
【发布时间】:2020-10-05 23:35:14
【问题描述】:

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

控制器:

<?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

【问题讨论】:

    标签: codeigniter-4


    【解决方案1】:

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

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

    <?php
    namespace App\Controllers\Install;
    use CodeIgniter\Controller;
    
    class Startup extends Controller {
    
        public function index() {
            return view('\App\Views\install\startup.php');
        }
    }
    

    如果你想把它设置为你的“默认”,你的路线需要是

    $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');
    

    案件事宜。

    【讨论】:

    • 您写道:我按照您的说明进行操作,但它仍然无法正常工作并收到错误消息 Controller 或其方法未找到:\App\Controllers\Install\Startup::index 即使我注释掉路由定义.
    • 我可能已将您的 Controllers/install 文件夹设置为 Controllers/Install (Capital I)。
    猜你喜欢
    • 2021-11-11
    • 2018-05-25
    • 2021-04-04
    • 2020-11-24
    • 2016-01-11
    • 1970-01-01
    • 1970-01-01
    • 2020-02-02
    • 2016-06-02
    相关资源
    最近更新 更多