Reputation: 17
I'm trying to loading view by code below:
Controller:
<?php namespace App\Controllers;
use CodeIgniter\Controller;
class Startup extends Controller
{
public function index()
{
return view('install/startup');
}
}
Route:
$routes->setDefaultNamespace('App\Controllers');
$routes->setDefaultController('Startup');
$routes->setDefaultMethod('index');
$routes->setTranslateURIDashes(false);
$routes->set404Override();
$routes->setAutoRoute(true);
When loading I've got 404 error message: Controller or its method is not found: \App\Controllers\Startup::index
please see image directory structure
Upvotes: 0
Views: 21535
Reputation: 5507
From your image showing your folder structure, you have your Startup controller under a install folder, so you need to factor that in.
Your Startup Controller needs to be... (Note the namespace)
<?php
namespace App\Controllers\Install;
use CodeIgniter\Controller;
class Startup extends Controller {
public function index() {
return view('\App\Views\install\startup.php');
}
}
And if you want to set this as your "default", your Routes need to be
$routes->setDefaultNamespace('App\Controllers\Install');
$routes->setDefaultController('Startup');
Note: No Route Definitions are set... I.E no $routes->get()... are defined
Namespace is your friend, so if you are going to put things under other folders you need to make your namespace values match.
UPDATE: Please NOTE. I have changed the Controllers/install folder to be Controllers/Install ( Using a Capital I for Install ). Case Matters...
So in your case you would use
$routes->setDefaultNamespace('App\Controllers\install'); // LOWER CASE install.
$routes->setDefaultController('Startup');
Case Matters.
Upvotes: 1