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');
案件很重要。
我正在尝试通过以下代码加载视图:
控制器:
<?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');
案件很重要。