summaryrefslogtreecommitdiffstats
path: root/user_guide/general/scaffolding.html
blob: 82adcf06fe05fcf18d324b62fd33bccf88894497 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>

<title>Code Igniter User Guide</title>

<style type='text/css' media='all'>@import url('../userguide.css');</style>
<link rel='stylesheet' type='text/css' media='all' href='../userguide.css' />

<script type="text/javascript" src="../nav/nav.js"></script>
<script type="text/javascript" src="../scripts/prototype.lite.js"></script>
<script type="text/javascript" src="../nav/moo.fx.js"></script>
<script type="text/javascript">
window.onload = function() {
	myHeight = new fx.Height('nav', {duration: 400}); 
	myHeight.hide();
}
</script>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv='expires' content='-1' />
<meta http-equiv= 'pragma' content='no-cache' />
<meta name='robots' content='all' />
<meta name='author' content='Rick Ellis' />
<meta name='description' content='Code Igniter User Guide' />

</head>
<body>

<!-- START NAVIGATION -->
<div id="nav"><div id="nav_inner"><script type="text/javascript">create_menu('../');</script></div></div>
<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>
<div id="masthead">
<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
<tr>
<td><h1>Code Igniter User Guide Version 1.5.0</h1></td>
<td id="breadcrumb_right"><a href="../toc.html">Full Table of Contents</a></td>
</tr>
</table>
</div>
<!-- END NAVIGATION -->


<!-- START BREADCRUMB -->
<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
<tr>
<td id="breadcrumb">
<a href="http://www.codeigniter.com/">Code Igniter Home</a> &nbsp;&#8250;&nbsp;
<a href="../index.html">User Guide Home</a> &nbsp;&#8250;&nbsp;
Scaffolding
</td>
<td id="searchbox"><form method="get" action="http://www.google.com/search"><input type="hidden" name="as_sitesearch" id="as_sitesearch" value="www.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>
</tr>
</table>
<!-- END BREADCRUMB -->

<br clear="all" />


<!-- START CONTENT -->
<div id="content">

<h1>Scaffolding</h1>

<p>Code Igniter's Scaffolding feature provides a fast and very convenient way to add, edit, or delete information in your database 
during development.</p>

<p class="important"><strong>Very Important:</strong>  Scaffolding is intended for development use only.  It provides very little
security other than a "secret" word, so anyone who has access to your Code Igniter site can potentially edit or delete your information.  
If you use scaffolding make sure you disable it immediately after you are through using it.  DO NOT leave it enabled on a live site.
And please, set a secret word before you use it.</p>


<h2>Why would someone use scaffolding?</h2>

<p>Here's a typical scenario:  You create a new database table during development and you'd like a quick way to insert some data
into it to work with.  Without scaffolding your choices are either to write some inserts using the command line or to use a
database management tool like phpMyAdmin.  With Code Igniter's scaffolding feature you can quickly add some data using its browser 
interface.  And when you are through using the data you can easily delete it.</p>

<h2>Setting a Secret Word</h2>

<p>Before enabling scaffolding please take a moment to set a secret word.  This word, when encountered in your URL,
will launch the scaffolding interface, so please pick something obscure that no one is likely to guess.</p>

<p>To set a secret word, open your <kbd>application/config/routes.php</kbd> file and look for this item:</p>

<code>$route['scaffolding_trigger'] = '';</code>

<p>Once you've found it add your own unique word.</p>

<p class="important"><strong>Note:</strong> The scaffolding word can <strong>not</strong> start with an underscore.</p>


<h2>Enabling Scaffolding</h2>

<p>Note: The information on this page assumes you already know how <a href="controllers.html">controllers</a> work, and that you have
a working one available.  It also assumes you have configured Code Igniter to auto-connect to your <a href="../database/index.html">database</a>. 
If not, the information here won't be very relevant, so you are encouraged to go through those sections first.
Lastly, it assumes you understand what a class constructor is.  If not, read the last section of the <a href="controllers.html">controllers</a>
page.</p>

<p>To enable scaffolding you will initialize it in your constructor like this:</p>

<code>
&lt;?php<br />
class Blog extends Controller {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function Blog()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parent::Controller();<br /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<samp>$this->load->scaffolding(</samp><kbd>'table_name'</kbd>);</samp><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
?&gt;</code>

<p>Where <kbd>table_name</kbd> is the name of the table (table, not database) you wish to work with.</p>

<p>Once you've initialized scaffolding, you will access it with this URL prototype:

<code>www.your-site.com/index.php/<var>class</var>/<dfn>secret_word</dfn>/</code>

<p>For example, using a controller named <var>Blog</var>, and <dfn>abracadabra</dfn> as the secret word,
you would access scaffolding like this:</p>

<code>www.your-site.com/index.php/<var>blog</var>/<dfn>abracadabra</dfn>/</code>

<p>The scaffolding interface should be self-explanatory.  You can add, edit or delete records.</p>


<h2>A Final Note:</h2>

<p>The scaffolding feature will only work with tables that contain a primary key, as this is information is needed to perform the various
database functions.</p>


</div>
<!-- END CONTENT -->


<div id="footer">
<p>
Previous Topic:&nbsp;&nbsp;<a href="autoloader.html">Auto-loading Resources</a>
&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
<a href="#top">Top of Page</a>&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
<a href="../index.html">User Guide Home</a>&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
Next Topic:&nbsp;&nbsp;<a href="routing.html">URI Routing</a>
<p>
<p><a href="http://www.codeigniter.com">Code Igniter</a> &nbsp;&middot;&nbsp; Copyright &#169; 2006 &nbsp;&middot;&nbsp; <a href="http://www.pmachine.com">pMachine, Inc.</a></p>
</div>

</body>
</html>