Todd Jenk
Todd Jenk

Reputation: 311

What is wrong with my Model and Controller?

For the life of me I cannot understand why I am receiving errors with my install of CodeIgniter and this current MVC set up.

The error I see is

Fatal error: Call to undefined method Login::users_model() in /var/www/application/controllers/login.php on line 17

Controller application/controllers/login.php

if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Login extends CI_Controller {

    public function __construct()
    {
        parent::__construct();
    }

    public function index()
    {

    $data = '';

    $this->load->model('users_model');

    $data['testing'] = $this->users_model()->test_user();

    $this->load->view('home',$data);


    }
}

Model application/models/users_model.php

if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Users_model extends CI_Model {

  function __construct()
    {
        // Call the Model constructor
        parent::__construct();
    }


  function test_user() {
      return 'Test User #1';
  }



}

View application/views/home.php

echo $testing;

Upvotes: 0

Views: 146

Answers (3)

The Odd Developer
The Odd Developer

Reputation: 929

Simply load your model inside the constructor

public function __construct()
{
    parent::__construct();
    $this->load->model('users_model');
}

Then simply call the relevant functions inside any controller functions like this.

public function index()
{

$data = '';

$data['testing'] =  $this-> users_model-> test_user();

$this->load->view('home',$data);
}

Upvotes: 0

Adarsh M Pallickal
Adarsh M Pallickal

Reputation: 821

No need for function bracket with model name

if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Login extends CI_Controller {

    public function __construct()
    {
        parent::__construct();
    }

    public function index()
    {

    $data = '';

    $this->load->model('users_model');

    $data['testing'] = $this->users_model->test_user();

    $this->load->view('home',$data);

    }
}

Upvotes: 2

user2936213
user2936213

Reputation: 1011

Replace $data['testing'] = $this->users_model()->test_user(); with $data['testing'] = $this->users_model->test_user(); in your controller.

Upvotes: 1

Related Questions