Home arrow PHP arrow Page 2 - Defining a Model Class for Handling Views with CodeIgniter

Review: moving presentation logic out of views - PHP

Welcome to the sixth installment of a seven-part series on handling views with the CodeIgniter PHP framework. This series shows you a few handy approaches that you can implement quickly within your CI-based programs to work with view files in a truly clever way, ranging from loading them sequentially to nesting views within other views.

TABLE OF CONTENTS:
  1. Defining a Model Class for Handling Views with CodeIgniter
  2. Review: moving presentation logic out of views
  3. Handling database contents with a simple model class
  4. Demonstrating a simple use of the model class
By: Alejandro Gervasio
Rating: starstarstarstarstar / 3
April 23, 2009

print this article
SEARCH DEV SHED

TOOLS YOU CAN USE

advertisement

If you’re like me, then you can’t wait to see how a model can be used for interacting with the “users” MySQL table that you saw in the prior tutorial. Before you learn that, however, I’m going to list all of the source files corresponding to the web application developed in the previous article, so you can clearly see the differences between using a model and using the CI’s database class directly.

Having clarified that point, here’s the complete source code for this sample PHP program:

(‘webpage.php’ file – located at /application/controllers/ folder)


<?php

class WebPage extends Controller{

function WebPage(){

// load controller parent

parent::Controller();

// load libraries here

$this->load->database();

// load helpers here

}

// generate web page using partial sections

function index(){

// generate headers section

$data['header']=$this->load->view('header_view',array('header'=>'Header Section'),TRUE);

$query=$this->db->get('users');

if($query->num_rows > 0){

// generate content section

$data['content']=NULL;

foreach($query->result() as $user){

$data['content'].=$this->load->view('users_view',array('user'=>$user),TRUE);

}

}

// generate footer section

$data['footer']=$this->load->view('footer_view',array('footer'=>'Footer Section'),TRUE);

// generate full web page

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

}

}

?>



(‘main_page.php’ file - located at /application/views/ folder)


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<title>Sample Web Page</title>

<style type="text/css">

body{

padding: 0;

margin: 0;

background: #999;

}

#container{

width: 600px;

margin: 0 auto;

}

#header{

padding: 10px;

background: #eee;

}

#content{

padding: 10px;

background: #9cf;

}

#footer{

padding: 10px;

background: #eee;

}

h1{

font: bold 2em Arial, Helvetica, sans-serif;

margin: 0 0 18px 0;

color: #039;

}

h2{

font: bold 1.5em Arial, Helvetica, sans-serif;

margin: 0 0 18px 0;

}

p{

font: normal .8em Arial, Helvetica, sans-serif;

margin: 0 0 18px 0;

}

</style>

</head>

<body>

<div id="container">

<?php

echo $header.$content.$footer;

?>

</div>

</body>

</html>



(‘users_view.php’ file - located at /application/views/ folder)


<p><strong>First Name: </strong><?php echo $user->firstname;?></p>

<p><strong>Last Name: </strong><?php echo $user->lastname;?></p>

<p><strong>Email: </strong><?php echo $user->email;?></p>

<hr />



(‘footer_view.php’ file - located at /application/views/ folder)


<div id="footer">

<h2><?php echo $footer;?></h2>

<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut.</p>

</div>

In this case, three views and a basic web page controller class are the only building blocks required for developing a web application whose main task is to display the contents of the “users” MySQL table on screen. As I stated before, the controller directly uses the database class for retrieving database rows, which are properly parsed before being embedded into the “main_page.php” view file.

Undoubtedly, the above approach demonstrates in a nutshell how to partially remove some presentation logic from a view, but it’s not the only method that you may want to use for handling views with CodeIgniter.

Now that you've hopefully recalled how the web application shown a few lines before was built by using a single controller class and some additional views, it’s time to move on. We're going to start defining a users model class, which will be tasked with retrieving database rows from the already familiar “users” MySQL table. Of course, creating a model implies that the signature of the controller must be modified to work with it, but don’t worry about this for the moment. Simply proceed to read the following section, where I’m going to explain how to build this model class.

Now, click on the link that appears below and read the next segment.



 
 
>>> More PHP Articles          >>> More By Alejandro Gervasio
 

blog comments powered by Disqus
escort Bursa Bursa escort Antalya eskort
   

PHP ARTICLES

- Hackers Compromise PHP Sites to Launch Attac...
- Red Hat, Zend Form OpenShift PaaS Alliance
- PHP IDE News
- BCD, Zend Extend PHP Partnership
- PHP FAQ Highlight
- PHP Creator Didn't Set Out to Create a Langu...
- PHP Trends Revealed in Zend Study
- PHP: Best Methods for Running Scheduled Jobs
- PHP Array Functions: array_change_key_case
- PHP array_combine Function
- PHP array_chunk Function
- PHP Closures as View Helpers: Lazy-Loading F...
- Using PHP Closures as View Helpers
- PHP File and Operating System Program Execut...
- PHP: Effects of Wrapping Code in Class Const...

Developer Shed Affiliates

 


Dev Shed Tutorial Topics: