Pankaj
Pankaj

Reputation: 10095

Class 'BaseController' not found

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

Answers (3)

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

user4419336
user4419336

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

Rooneyl
Rooneyl

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

Related Questions