views:

166

answers:

1

I was playing around with this code. http://programmersvoice.com/tag/code And I noticed that the following line.

$this->load->model($this->models."pagemodel", 'pages');

I compare this with

$this->load->model("pagemodel", 'pages');

This is what codeigniter's document http://codeigniter.com/user_guide/general/models.html#loading suggest.

However method 2 takes longer time than the first one.

Could anyone explain what "$this->models." do please?

Thanks in advance.

The following is the whole code of pages.php in controllers/admin

<?php

class Pages extends Application
{

    function Pages()
    {
     parent::Application();
     $this->auth->restrict('editor'); // restrict this controller to editor and above
     $this->load->model($this->models."pagemodel", 'pages'); // Load the page model
    }

    function manage()
    {
     $data = $this->pages->pages(); // List the pages
     $this->table->set_heading('Title', 'Slug', 'Actions'); // Setting headings for the table

     foreach($data as $value => $key)
     {
      $actions = anchor("admin/pages/edit/".$key['id']."/", "Edit") . anchor("admin/pages/delete/".$key['id']."/", "Delete"); // Build actions links
      $this->table->add_row($key['title'], $key['slug'], $actions); // Adding row to table
     }

     $this->auth->view('pages/manage'); // Load the view
    }

    function delete($id)
    {
     $this->pages->delete($id);
     $this->auth->view('pages/delete_success');
    }

    function add()
    {

     $this->load->helper(array('form', 'url'));

     $this->load->library('form_validation');

     $this->form_validation->set_rules('title', 'Page Title', 'required');
     $this->form_validation->set_rules('content', 'Content', 'required');

     if($this->form_validation->run() == FALSE)
     {
      $this->auth->view('pages/add');
     }
     else
     {
      $data['title'] = set_value('title');
      $data['content'] = set_value('content');
      $data['slug'] = url_title($data['title'], 'underscore', TRUE);

      $this->pages->add($data);

      $this->auth->view('pages/add_success');
     }
    }

    function edit($id)
    {

     $this->load->helper(array('form', 'url'));

     $this->load->library('form_validation');

     $this->form_validation->set_rules('title', 'Page Title', 'required');
     $this->form_validation->set_rules('content', 'Content', 'required');

     if($this->form_validation->run() == FALSE)
     {
      $data = $this->pages->page($id);

      $this->auth->view('pages/edit', $data[0]);
     }
     else
     {
      $data['title'] = set_value('title');
      $data['content'] = set_value('content');
      $data['slug'] = url_title($data['title'], 'underscore', TRUE);

      $this->pages->edit($id, $data);

      $this->auth->view('pages/edit_success');
     }
    }
}

?>
+7  A: 

I'm not totally sure about the following, since the current version of Codeigniter doesn't seem to populate the $this->models variable, but I think that:

$this->models contained the full path to the application models directory, and therefore loading is faster, since CI doesn't have to look in different folders (global & application)

Joel L
I found the documentation of this library here. http://www.adamgriffiths.co.uk/user_guide/auth/usage.htmlAt the bottom, you can find "Loading views and models".
shin