Professional CodeIgniter, Thomas Myer
Chapter 1: Welcome to the MVC World
15
As before, this controller is bare - bones, consisting of just an initialization function that ties this particular
controller to the master class Controller. Once again, notice that with this simple notation, CodeIgniter
allows you to extend the basic core classes and create something specific and powerful with very little work.
When you ' re working with a controller, every function or method maps to an address in your
application. If you want users to view a page with the address of
/page/foo
, there had better be a Page
controller and a
foo()
method inside that controller.
For now, all that ' s needed is an
index()
function to represent the site ' s home page.
function index(){
//code goes here
}
Right now, if a user were to go to your home page, they ' d see a blank page. That ' s because nothing
particularly interesting is happening inside the
index()
method. To change that, just simply load the
Page_model
so you can access the
fetchHomePage()
method you created previously.
<
?php
class Page extends Controller {
function Page(){
parent::Controller();
}
}
function index(){
$this-
>
load-
>
model(`Page_model','',TRUE);
$data[`content'] = $this-
>
Page_model-
>
fetchHomePage();
}
}
?
>
Notice that once you load the model you want, you can access the methods inside that model by simply
invoking the name of the model:
$this
-
>
Page_model
-
>
fetchHomePage()
. Storing the information
from the database into the
$data
array makes it easy to display the information in a view.
You ' ve loaded the model and invoked the method to retrieve the data; now all you need to do is print
out the data to the screen. In extremely simple applications, you could get away with simply printing out
what you need right there in the controller, but that isn ' t smart to do unless you need a quick and easy
debugging method.
The best way is to load a view. You haven ' t created one yet, but for now, use the name
home
. Later you
can create a home.php file in the Views directory. When you load a view, the name of the file (sans .php )
is the first argument, and any data you want to pass in are the second argument. Here ' s what the entire
controller looks like:
is the first argument, and any data you want to pass in are the second argument. Here ' s what the entire
controller looks like:
<
?php
class Page extends Controller {
function Page(){
parent::Controller();
}
c01.indd 15
c01.indd 15
6/10/08 5:30:01 PM
6/10/08 5:30:01 PM