Reputation: 10095
I am using PHP MVC CI. BaseController and LoginController are both inside Controller Folder. When I run the Login Controller. It says..
Class 'BaseController' not found
Login Controller
<?php
if ( ! defined('BASEPATH')) die('No direct script access allowed');
class loginController extends BaseController {
function __construct() {
parent::__construct();
}
public function login() {
$this->load->View("template/header");
$this->load->View("login_view");
}
}
?>
Base Controller
<?php
class BaseController extends CI_Controller {
function __construct()
{
session_start();
$this->load->library('session');
parent::__construct();
}
}
?>
Any idea why this is happening ?
Upvotes: 0
Views: 4234
Reputation: 479
You just need to change the file path , as follows:
application > controllers > Login.php
<?php
if ( ! defined('BASEPATH')) die('No direct script access allowed');
class loginController extends BaseController {
function __construct() {
parent::__construct();
}
public function login() {
$this->load->View("template/header");
$this->load->View("login_view");
}
}
?>
And, application > core > Base_controller.php
<?php
class BaseController extends CI_Controller {
function __construct()
{
session_start();
$this->load->library('session');
parent::__construct();
}
}
?>
Upvotes: 1
Reputation:
If you need a parent controller than should be in
Path - application/core/MY_Controller.php
http://www.codeigniter.com/user_guide/general/core_classes.html
<?php
class MY_Controller extends CI_Controller {
public function __construct() {
parent::__construct();
}
}
If you also autoload sessions then you will not need to use session_start
.
http://www.codeigniter.com/user_guide/libraries/sessions.html
Filename: Welcome.php
must be first letter uppercase in CI3
<?php
class Welcome extends MY_Controller {
}
CI 3 is case sensitive
Both user guides now here. CI2 & CI3 http://www.codeigniter.com/docs
Upvotes: 2
Reputation: 7902
Codeigniter wont load it from the same folder.
You either put both classes in the same file, not desirable or put the base controller in application/core.
You will need to also set your prefix for you extended controller, for example BASE_Controller
.
application/config/config.php
$config['subclass_prefix'] = 'BASE_';
Codeigniter has good docs, and what you are after can be found here
Upvotes: 0