blob: 0b309fd4820ea5539c2e1946f16be92cbd397e68 [file] [log] [blame]
adminb0dd10f2006-08-25 17:25:49 +00001<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html>
3<head>
4
Derek Allard404e35d2007-08-07 01:00:45 +00005<title>CodeIgniter User Guide : Views</title>
adminb0dd10f2006-08-25 17:25:49 +00006
7<style type='text/css' media='all'>@import url('../userguide.css');</style>
8<link rel='stylesheet' type='text/css' media='all' href='../userguide.css' />
9
admin17a890d2006-09-27 20:42:42 +000010<script type="text/javascript" src="../nav/nav.js"></script>
admin2296fc32006-09-27 21:07:02 +000011<script type="text/javascript" src="../nav/prototype.lite.js"></script>
admin17a890d2006-09-27 20:42:42 +000012<script type="text/javascript" src="../nav/moo.fx.js"></script>
adminb0dd10f2006-08-25 17:25:49 +000013<script type="text/javascript">
14window.onload = function() {
admine334c472006-10-21 19:44:22 +000015 myHeight = new fx.Height('nav', {duration: 400});
adminb0dd10f2006-08-25 17:25:49 +000016 myHeight.hide();
17}
18</script>
19
20<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
21<meta http-equiv='expires' content='-1' />
22<meta http-equiv= 'pragma' content='no-cache' />
23<meta name='robots' content='all' />
24<meta name='author' content='Rick Ellis' />
Derek Allardd2df9bc2007-04-15 17:41:17 +000025<meta name='description' content='CodeIgniter User Guide' />
adminb0dd10f2006-08-25 17:25:49 +000026
27</head>
28<body>
29
30<!-- START NAVIGATION -->
31<div id="nav"><div id="nav_inner"><script type="text/javascript">create_menu('../');</script></div></div>
32<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle.jpg" width="153" height="44" border="0" title="Toggle Table of Contents" alt="Toggle Table of Contents" /></a></div>
33<div id="masthead">
34<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
35<tr>
Derek Allard60ca9b72007-07-12 19:53:27 +000036<td><h1>CodeIgniter User Guide Version 1.5.4</h1></td>
adminc0d5d522006-10-30 19:40:35 +000037<td id="breadcrumb_right"><a href="../toc.html">Table of Contents Page</a></td>
adminb0dd10f2006-08-25 17:25:49 +000038</tr>
39</table>
40</div>
41<!-- END NAVIGATION -->
42
43
44<!-- START BREADCRUMB -->
45<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
46<tr>
47<td id="breadcrumb">
Derek Allardd2df9bc2007-04-15 17:41:17 +000048<a href="http://www.codeigniter.com/">CodeIgniter Home</a> &nbsp;&#8250;&nbsp;
adminb0dd10f2006-08-25 17:25:49 +000049<a href="../index.html">User Guide Home</a> &nbsp;&#8250;&nbsp;
50Views
51</td>
Derek Allardbc030912007-06-24 18:25:29 +000052<td id="searchbox"><form method="get" action="http://www.google.com/search"><input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.com/user_guide/" />Search User Guide&nbsp; <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />&nbsp;<input type="submit" class="submit" name="sa" value="Go" /></form></td>
adminb0dd10f2006-08-25 17:25:49 +000053</tr>
54</table>
55<!-- END BREADCRUMB -->
56
57<br clear="all" />
58
59
60<!-- START CONTENT -->
61<div id="content">
62
63<h1>Views</h1>
64
65<p>A <dfn>view</dfn> is simply a web page, or a page fragment, like a header, footer, sidebar, etc.
admine334c472006-10-21 19:44:22 +000066In fact, views can flexibly be embedded within other views (within other views, etc., etc.) if you need this type
adminb0dd10f2006-08-25 17:25:49 +000067of hierarchy.</p>
68
69<p>Views are never called directly, they must be loaded by a <a href="controllers.html">controller</a>. Remember that in an MVC framework, the Controller acts as the
admine334c472006-10-21 19:44:22 +000070traffic cop, so it is responsible for fetching a particular view. If you have not read the <a href="controllers.html">Controllers</a> page
adminb0dd10f2006-08-25 17:25:49 +000071you should do so before continuing.</p>
72
73<p>Using the example controller you created in the <a href="controllers.html">controller</a> page, let's add a view to it.</p>
74
75<h2>Creating a View</h2>
76
77<p>Using your text editor, create a file called <dfn>blogview.php</dfn>, and put this in it:</p>
78
79<textarea class="textarea" style="width:100%" cols="50" rows="10">
Derek Allardc6441282007-07-04 23:54:32 +000080&lt;html>
81&lt;head>
82&lt;title>My Blog&lt;/title>
83&lt;/head>
84&lt;body>
85 &lt;h1>Welcome to my Blog!&lt;/h1>
86&lt;/body>
87&lt;/html>
adminb0dd10f2006-08-25 17:25:49 +000088</textarea>
89
90<p>Then save the file in your <dfn>application/views/</dfn> folder.</p>
91
92<h2>Loading a View</h2>
93
94<p>To load a particular view file you will use the following function:</p>
95
96<code>$this->load->view('<var>name</var>');</code>
97
admin108d18a2006-09-02 17:45:38 +000098<p>Where <var>name</var> is the name of your view file. Note: The .php file extension does not need to be specified unless you use something other then <kbd>.php</kbd>.</p>
adminb0dd10f2006-08-25 17:25:49 +000099
Rick Ellis325197e2006-11-20 17:29:05 +0000100
adminb0dd10f2006-08-25 17:25:49 +0000101<p>Now, open the controller file you made earlier called <dfn>blog.php</dfn>, and replace the echo statement with the view loading function:</p>
102
103
104<textarea class="textarea" style="width:100%" cols="50" rows="10">
105<?php
106class Blog extends Controller {
107
108 function index()
109 {
110 $this->load->view('blogview');
111 }
112}
113?>
114</textarea>
115
116
117<p>If you visit the your site using the URL you did earlier you should see your new view. The URL was similar to this:</p>
118
119<code>www.your-site.com/index.php/<var>blog</var>/</code>
120
Rick Ellis325197e2006-11-20 17:29:05 +0000121<h2>Storing Views within Sub-folders</h2>
122
123<p>Your view files can also be stored within sub-folders if you prefer that type of organization. When doing so you will need
124to include the folder name loading the view. Example:</p>
125
126<code>$this->load->view('<kbd>folder_name</kbd>/<var>file_name</var>');</code>
127
adminb0dd10f2006-08-25 17:25:49 +0000128
129<h2>Adding Dynamic Data to the View</h2>
130
admine334c472006-10-21 19:44:22 +0000131<p>Data is passed from the controller to the view by way of an <strong>array</strong> or an <strong>object</strong> in the second
adminb0dd10f2006-08-25 17:25:49 +0000132parameter of the view loading function. Here is an example using an array:</p>
133
134<code>$data = array(<br />
135&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'title' => 'My Title',<br />
Rick Ellis0cb34042007-03-23 21:02:11 +0000136&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'heading' => 'My Heading',<br />
adminb0dd10f2006-08-25 17:25:49 +0000137&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'message' => 'My Message'<br />
138&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />
139<br />
140$this->load->view('blogview', <var>$data</var>);</code>
141
142<p>And here's an example using an object:</p>
143
144<code>$data = new Someclass();<br />
145$this->load->view('blogview', <var>$data</var>);</code>
146
147<p>Note: If you use an object, the class variables will be turned into array elements.</p>
148
149
150<p>Let's try it with your controller file. Open it add this code:</p>
151
152<textarea class="textarea" style="width:100%" cols="50" rows="14">
153<?php
154class Blog extends Controller {
155
156 function index()
157 {
158 $data['title'] = "My Real Title";
159 $data['heading'] = "My Real Heading";
160
161 $this->load->view('blogview', $data);
162 }
163}
164?>
165</textarea>
166
167
168<p>Now open your view file and change the text to variables that correspond to the array keys in your data:</p>
169
170
171<textarea class="textarea" style="width:100%" cols="50" rows="10">
Derek Allardc6441282007-07-04 23:54:32 +0000172&lt;html>
173&lt;head>
174&lt;title>&lt;?php echo $title;?>&lt;/title>
175&lt;/head>
176&lt;body>
177 &lt;h1>&lt;?php echo $heading;?>&lt;/h1>
178&lt;/body>
179&lt;/html>
adminb0dd10f2006-08-25 17:25:49 +0000180</textarea>
181
182<p>Then load the page at the URL you've been using and you should see the variables replaced.</p>
183
admine7e1dcd2006-10-21 18:04:01 +0000184<p><strong>Note:</strong> You'll notice that in the example above we are using PHP's alternative syntax. If you
adminb0dd10f2006-08-25 17:25:49 +0000185are not familiar with it you can read about it <a href="alternative_php.html">here</a>.</p>
186
187<h2>Creating Loops</h2>
188
189<p>The data array you pass to your view files is not limited to simple variables. You can
190pass multi dimensional arrays, which can be looped to generate multiple rows. For example, if you
191pull data from your database it will typically be in the form of a multi-dimensional array.</p>
192
193<p>Here's a simple example. Add this to your controller:</p>
194
195<textarea class="textarea" style="width:100%" cols="50" rows="17">
196<?php
197class Blog extends Controller {
198
199 function index()
200 {
201 $data['todo_list'] = array('Clean House', 'Call Mom', 'Run Errands');
202
203 $data['title'] = "My Real Title";
204 $data['heading'] = "My Real Heading";
205
206 $this->load->view('blogview', $data);
207 }
208}
209?>
210</textarea>
211
212
213<p>Now open your view file and create a loop:</p>
214
215
216<textarea class="textarea" style="width:100%" cols="50" rows="24">
Derek Allardc6441282007-07-04 23:54:32 +0000217&lt;html>
218&lt;head>
Derek Allard2005ffe2007-09-15 20:11:54 +0000219&lt;title>&lt;?php echo $title;?>&lt;/title>
Derek Allardc6441282007-07-04 23:54:32 +0000220&lt;/head>
221&lt;body>
Derek Allard2005ffe2007-09-15 20:11:54 +0000222&lt;h1>&lt;?php echo $heading;?>&lt;/h1>
adminb0dd10f2006-08-25 17:25:49 +0000223
Derek Allardc6441282007-07-04 23:54:32 +0000224&lt;h3>My Todo List&lt;/h3>
adminb0dd10f2006-08-25 17:25:49 +0000225
Derek Allardc6441282007-07-04 23:54:32 +0000226&lt;ul>
227&lt;?php foreach($todo_list as $item):?>
adminb0dd10f2006-08-25 17:25:49 +0000228
Derek Allard2005ffe2007-09-15 20:11:54 +0000229&lt;li>&lt;?php echo $item;?>&lt;/li>
adminb0dd10f2006-08-25 17:25:49 +0000230
Derek Allardc6441282007-07-04 23:54:32 +0000231&lt;?php endforeach;?>
232&lt;/ul>
adminb0dd10f2006-08-25 17:25:49 +0000233
234
Derek Allardc6441282007-07-04 23:54:32 +0000235&lt;/body>
236&lt;/html>
adminb0dd10f2006-08-25 17:25:49 +0000237</textarea>
238
239
240
241</div>
242<!-- END CONTENT -->
243
244
245<div id="footer">
246<p>
247Previous Topic:&nbsp;&nbsp;<a href="controllers.html">Controllers</a>
248&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
249<a href="#top">Top of Page</a>&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
250<a href="../index.html">User Guide Home</a>&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
251Next Topic:&nbsp;&nbsp;<a href="models.html">Models</a>
Derek Allardc6441282007-07-04 23:54:32 +0000252</p>
Derek Allardd2df9bc2007-04-15 17:41:17 +0000253<p><a href="http://www.codeigniter.com">CodeIgniter</a> &nbsp;&middot;&nbsp; Copyright &#169; 2007 &nbsp;&middot;&nbsp; <a href="http://ellislab.com/">Ellislab, Inc.</a></p>
adminb0dd10f2006-08-25 17:25:49 +0000254</div>
255
256</body>
257</html>