Codeigniter4 - Контроллер или его метод не найдены: \ App \ Controllers \ Startup :: index - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь загрузить представление по коду ниже:

Контроллер:

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

см. изображение структура каталогов

1 Ответ

1 голос
/ 16 июня 2020

Из вашего изображения, показывающего структуру папок, у вас есть контроллер запуска в папке установки, поэтому вам необходимо учесть это.

Контроллер запуска должен быть ... (обратите внимание на пространство имен)

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

Примечание: определения маршрутов не установлены ... IE no $ routes- > get () ... определены

Пространство имен - ваш друг, поэтому, если вы собираетесь размещать вещи в других папках, вам необходимо согласовать значения пространства имен.

ОБНОВЛЕНИЕ : ОБРАТИТЕ ВНИМАНИЕ. Я изменил папку Controllers / install на Controllers / Install (с заглавной буквы I для установки). Дело имеет значение ...

Итак, в вашем случае вы должны использовать

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

Дело имеет значение.

...