<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Yayak Java &#187; CakePHP</title>
	<atom:link href="http://yayakmpf.wordpress.com/category/cakephp/feed/" rel="self" type="application/rss+xml" />
	<link>http://yayakmpf.wordpress.com</link>
	<description>Coffee Time @ Cyber Office</description>
	<lastBuildDate>Sun, 29 Nov 2009 14:05:09 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>id</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='yayakmpf.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/bc684cbba097f1aae4dbccc763856878?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Yayak Java &#187; CakePHP</title>
		<link>http://yayakmpf.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://yayakmpf.wordpress.com/osd.xml" title="Yayak Java" />
		<item>
		<title>Konsep Dasar CakePHP (bag IV)</title>
		<link>http://yayakmpf.wordpress.com/2008/05/12/konsep-dasar-cakephp-bag-iv/</link>
		<comments>http://yayakmpf.wordpress.com/2008/05/12/konsep-dasar-cakephp-bag-iv/#comments</comments>
		<pubDate>Mon, 12 May 2008 03:32:00 +0000</pubDate>
		<dc:creator>yayakmpf</dc:creator>
				<category><![CDATA[CakePHP]]></category>

		<guid isPermaLink="false">http://yayakmpf.wordpress.com/2008/05/12/konsep-dasar-cakephp-bag-iv/</guid>
		<description><![CDATA[Mulai bagian ini anda harus pasang perhatian baik-baik. Pada manual resmi dari situs CakePHP.org sebelum Chapter Models ini ada satu chapter bernama Scaffold yang merupakan salah satu ‘hot feature’ dari Cake sendiri, dimana anda bisa membuat satu aplikasi lengkap cukup dengan menuliskan var $scaffold;, dan simsalabim!!! Akan tercipta aplikasi dengan action: index, add, edit, view, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yayakmpf.wordpress.com&blog=3711654&post=46&subd=yayakmpf&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Mulai bagian ini anda harus pasang perhatian baik-baik. Pada manual resmi dari situs CakePHP.org sebelum Chapter Models ini ada satu chapter bernama Scaffold yang merupakan salah satu ‘hot feature’ dari Cake sendiri, dimana anda bisa membuat satu aplikasi lengkap cukup dengan menuliskan <em>var $scaffold;</em>, dan simsalabim!!! Akan tercipta aplikasi dengan action: index, add, edit, view, dan delete (sesuai dengan standar Cake, lengkap dari model hingga view.</p>
<p class="MsoNormal">Namun dalam membangun aplikasi sering kita melakukan kustomisasi, misal dalam data validation ataupun penambahan logic atau action tertentu. Jadi pembahasan pembuatan aplikasi dengan feature scaffolding dan Bake akan saya simpan dulu. Menurut hemat saya, jika kita memulai latihan dari yang berat, maka ketika kita diminta untuk ‘berlomba’ di level yang lebih ringan, semuanya akan terasa sangat mudah.</p>
<h4>Section 1</h4>
<h3>Apakah Model Itu?</h3>
<p>Dalam Chapter 2: Konsep Dasar, kita sudah menyinggung sedikit tentang konsep MVC, dimana Model menjadi bagian awalnya. <span>Jika database ada di level presentation, maka Model berada pada level application logic. Boleh dikata bahwa suatu Model merupakan titik akses ke database, atau lebih tepatnya tabel di dalam database. Dalam konvensi Cake mengatur bahwa nama suatu tabel harus jamak, sedangkan nama Model merupakan<span> </span>bentuk tunggalnya (singular). Contoh: jika tabel bernama ‘users’ maka modelnya bernama ‘User’. Model juga dapat berisi validasi data, informasi asosiasi, dan metode lain yang berkaitan dengan tabel yang digunakan. </span>Berikut contoh jika anda membuat Model User, yang kemudian disimpan di /app/model/user.php</p>
<pre>
<pre>//Untuk membuat model dalam Cake anda harusmenurunkannya dari AppModel</pre>
<pre>class User extends AppModel</pre>
<pre><span>{</span></pre>
<pre><span><span>    </span>// Pastikan untuk memulai dengan mendifinasikanvariabel modelnya sendiri.</span></pre>
<pre><span><span>    </span></span>var $name = 'User';</pre>
<pre><span><span>    </span>// Kemudian diikuti validasi data.</span></pre>
<pre><span><span>    </span>var $validate = array();</span></pre>
<pre><span> </span></pre>
<pre><span><span>    </span>// Dan sertakan asosiasi jika ada.</span></pre>
<pre><span> </span></pre>
<pre><span><span>    </span></span>var $hasMany = array('Image' =&gt;</pre>
<pre><span>                   </span>array('className' =&gt; 'Image')</pre>
<pre><span>                   </span>);</pre>
<pre><span>    </span>// Anda juga dapat menyertakan function buatan anda sendiri:</pre>
<pre><span>    </span>function makeInactive($uid)</pre>
<pre><span>    </span>{</pre>
<pre><span>        </span>//Silahkan tulis logic-nya disini...</pre>
<pre><span>    </span>}</pre>
<pre>}</pre>
<pre>?&gt;</pre>
</pre>
<h4>Section 2</h4>
<h3>Function dalam Model</h3>
<p>Jika kita lihat contoh kode di atas dari sisi OOP/PHP, suatu model adalah suatu class yang merupakan turunan dari AppModel. Class AppModel sendiri aslinya terletak dalam direktori /cake, tapi jika anda ingin merubahnya sesuai kebutuhan aplikasi anda, salinlah ke app/app_model.php. Jika anda cermati isi filenya, AppModel ini sendiri juga merupakan turunan dari class Model yang merupakan library Cake standar yang ada di <strong>cake/libs/model.php</strong>. Jika anda ingin mengetahui lebih banyak tentang function dalam Model, silahkan kunjungi <a href="http://api.cakephp.org/">http://api.cakephp.org</a> untuk info lebih lengkap. Yang akan dibahas disini adalah function yang paling sering digunakan.</p>
<p><span>Pengambilan Data</span></p>
<p><span>Berikut adalah beberapa cara mendapatkan data menggunakan model:</span></p>
<ul>
<li><!--[if !supportLists]--><span style="font-family:Symbol;"><span><span> </span></span></span><!--[endif]--><strong>findAll</strong></li>
<li><!--[if !supportLists]--><span><span><span> </span></span></span><!--[endif]-->string <em>$conditions</em></li>
<li><!--[if !supportLists]--><span><span><span> </span></span></span><!--[endif]-->array <em>$fields</em></li>
<li><!--[if !supportLists]--><span><span><span> </span></span></span><!--[endif]-->string <em>$order</em></li>
<li><!--[if !supportLists]--><span><span><span> </span></span></span><!--[endif]-->int <em>$limit</em></li>
<li><!--[if !supportLists]--><span><span><span> </span></span></span><!--[endif]-->int <em>$page</em></li>
<li><!--[if !supportLists]--><span><span><span> </span></span></span><!--[endif]-->int <em>$recursive</em></li>
</ul>
<p>Mengembalikan field tertentu sampai dengan batasa $limut sesuai dengan $conditions (jika ada syarat/kondisi tertentu), dimulai dari halaman $page (defaultnya 1). $conditions berbentuk seperti statement SQL, semisal: $conditions=”description=’tutorial’ AND life_cycle&gt;4”.</p>
<p>Ketika opsi $recursive diset lebih besar dari 1, operasi findAll() akan mengembalikan model yang diasosiasikan dengan model yang ditemukan oleh findAll().</p>
<ul>
<li><!--[if !supportLists]--><strong>find</strong></li>
</ul>
<ul>
<li><!--[if !supportLists]--><span><span><span> </span></span></span><!--[endif]-->string <em>$conditions</em></li>
<li><!--[if !supportLists]--><span><span><span> </span></span></span><!--[endif]-->array <em>$fields</em></li>
<li><!--[if !supportLists]--><span><span><span> </span></span></span><!--[endif]-->string <em>$order</em></li>
<li><!--[if !supportLists]--><span><span><span> </span></span></span><!--[endif]-->int <em>$recursive</em></li>
</ul>
<p>Mengembalikan field tertentu (atau seluruhnya jika tidak ditentukan) dari record pertama yang sesuai dengan $conditions.</p>
<p>Ketika opsi $recursive diset ke suatu nilai integer antara 1 dan 3, find() akan mengembalikan model yang diasosiasikan dengan model yang ditemukan oleh find().</p>
<ul>
<li><!--[if !supportLists]--><strong>findAllBy</strong></li>
<li><!--[if !supportLists]--><span><span><span> </span></span></span><!--[endif]-->string <em>$value</em></li>
</ul>
<p><span>Method ini bisa dipakai sebagai jalan pintas untuk mencari suatu nilai tertentu dari suatu field dalam tabel. </span>Tinggal lekatkan field yang ingin anda cari, kemudian buatlah menjadi CamelCase (CamelCase adalah Case yang menjadikan setiap huruf awal dari setiap kata dalam suatu frase menjadi huruf capital, contoh: LastName, JobPosition, ProductOwner). Contoh (ketika digunakan dalam suatu Controller) seperti:</p>
<p>$this-&gt;Post-&gt;findByTitle(&#8216;My First Blog Post&#8217;);<br />
$this-&gt;Author-&gt;findByLastName(&#8216;Rogers&#8217;);<br />
$this-&gt;Property-&gt;findAllByState(&#8216;AZ&#8217;);<br />
$this-&gt;Specimen-&gt;findAllByKingdom(&#8216;Animalia&#8217;);</p>
<p>Hasil yang didapatkan dalam bentuk Array seperti find() atau findAll().</p>
<ul>
<li><!--[if !supportLists]--><strong>findNeighbours</strong></li>
<li><!--[if !supportLists]-->string <em>$conditions</em></li>
<li><!--[if !supportLists]--><span><span><span> </span></span></span><!--[endif]-->array <em>$field</em></li>
<li><!--[if !supportLists]--><span><span><span> </span></span></span><!--[endif]-->string <em>$value</em></li>
</ul>
<p>Method seperti ini mirip seperti jika kita menggunakan aplikasi kamus/dictionary. Biasanya jika kita mencari kata tertentu, maka akan diberikan pula kata yang mendekati bentuk kata tersebut. Hasil yang didapatkan berupa array, yang ditentukan oleh $field dan $value, dan dibatasi oleh $conditions. <span>Namun hanya dapat digunakan pada tipe data ‘numeric’ dan ‘date’. Contoh:</span></p>
<p>class ImagesController extends AppController<br />
{<br />
function view($id)<br />
{<br />
// Ini cara untuk mengambil data sebuah Image</p>
<p>$this-&gt;set(&#8216;image&#8217;, $this-&gt;Image-&gt;find(&#8220;id = $id&#8221;);</p>
<p>// Tapi kita juga ingin melihat yang sebelum dan sesudahnya&#8230;</p>
<p>$this-&gt;set(&#8216;neighbours&#8217;, $this-&gt;Image-&gt;findNeighbours(null, &#8216;id&#8217;, $id);</p>
<p>}<br />
}</p>
<p>Kode di atas memberi kita suatu array $image[‘Image’], sekaligus dengan $ neighbours['prev']['Image']['id'] dan $neighbours['next']['Image']['id'] pada sisi view.</p>
<ul>
<li><!--[if !supportLists]--><strong>field</strong></li>
<li><!--[if !supportLists]--><span><span><span> </span></span></span><!--[endif]-->string <em>$name</em></li>
<li><!--[if !supportLists]--><span><span><span> </span></span></span><!--[endif]-->string <em>$conditions</em></li>
<li><!--[if !supportLists]--><span><span><span> </span></span></span><!--[endif]-->string <em>$order</em></li>
</ul>
<p>Mengembalikan sebuah string dari field tunggal dari record pertama sesuai <strong>$conditions</strong> dan urut berdasar <strong>$order</strong>.</p>
<ul>
<li><!--[if !supportLists]--><strong>findCount</strong></li>
<li><!--[if !supportLists]--><span><span><span> </span></span></span><!--[endif]-->string <em>$conditions</em></li>
</ul>
<p>Mengembalikan jumlah record sesuai $conditions.</p>
<ul>
<li><!--[if !supportLists]--><strong>generateList</strong></li>
<li><!--[if !supportLists]-->string <em>$conditions</em></li>
<li><!--[if !supportLists]--><span><span><span> </span></span></span><!--[endif]-->string <em>$order</em></li>
<li><!--[if !supportLists]--><span><span><span> </span></span></span><!--[endif]-->int <em>$limit</em></li>
<li><!--[if !supportLists]--><span><span><span> </span></span></span><!--[endif]-->string <em>$keyPath</em></li>
<li><!--[if !supportLists]--><span><span><span> </span></span></span><!--[endif]-->string <em>$valuePath</em></li>
</ul>
<p>Method ini merupakan cara cepat untuk mendapatkan sederet daftar pasangan nilai kunci –sangat cocok dipakai untuk membuat tag select HTML dari daftar Model aplikasi anda.<span> </span>Gunakan $conditions, $order, dan $limit sama seperti pada findAll(). $keyPath dan $valuePath merupakan tempat dimana Model dapat menemukan letak key dan value untuk daftar tadi.. Sebagai contoh, jika anda ingin meng-generate suatu daftar/list berdasar aturan pada model Role, dengan key berupa ids integer, maka bisa berbentuk seperti ini:</p>
<p>$this-&gt;set(<br />
&#8216;Roles&#8217;,<br />
$this-&gt;Role-&gt;generateList(null, &#8216;role_name ASC&#8217;, null, &#8216;{n}.Role.id&#8217;, &#8216;{n}.Role.role_name&#8217;)<br />
);</p>
<p>//Kode di atas akan menghasilkan:<br />
array(<br />
&#8216;1&#8242; =&gt; &#8216;Account Manager&#8217;,<br />
&#8216;2&#8242; =&gt; &#8216;Account Viewer&#8217;,<br />
&#8216;3&#8242; =&gt; &#8216;System Manager&#8217;,<br />
&#8216;4&#8242; =&gt; &#8216;Site Visitor&#8217;<br />
);</p>
<ul>
<li><!--[if !supportLists]--><strong>read</strong></li>
<li><!--[if !supportLists]--><span><span><span> </span></span></span><!--[endif]-->string <em>$fields</em></li>
<li><!--[if !supportLists]--><span><span><span> </span></span></span><!--[endif]-->string <em>$id</em></li>
</ul>
<p>Gunakan read() ini untuk memperoleh field dan nilainya dari record yang telah diload atau record yang ditentukan oleh $id.</p>
<p><span>Sebagai catatan, read() hanya akan mengambil data dari model asosiasi level pertama tanpa mempedulikan hasil $recursive dalam model. Untuk memperoleh level tambahan, gunakan find() atau findAll().</span></p>
<ul>
<li><!--[if !supportLists]--><strong>query</strong></li>
<li><!--[if !supportLists]--><span><span><span> </span></span></span><!--[endif]-->string <em>$query</em></li>
</ul>
<ul>
<li><!--[if !supportLists]--><strong>execute</strong></li>
<li><!--[if !supportLists]--><span><span><span> </span></span></span><!--[endif]-->string <em>$query</em></li>
</ul>
<p>Perintah SQL biasa dapat dipanggil dengan method query dan execute. Perbedaan antara keduanya adalah query() digunakan untuk membuat custom SQL query (hasilnya dikembalikan). Sedangkan execute() digunakan untuk membuat custom SQL command (tidak membutuhkan nilai dikembalikan). Berikut contoh perintah SQL dengan query():</p>
<p>query(&#8220;SELECT first_name FROM posters_table<br />
WHERE poster_id = 1&#8243;);<br />
$firstName = $ret[0]['first_name'];<br />
return $firstName;<br />
}<br />
}<br />
?&gt;</p>
<h3>Kondisi Pencarian Kompleks (menggunakan array)</h3>
<p><span>Kebanyakan pemanggilan pencarian dalam model dilakukan dengan melibatkan kondisi tertentu. Pendekatan yang paling sederhana adalah dengan menggunakan klausa WHERE dalam potongan kode SQL. Tetapi jika anda butuh sesuatu yang lebih, anda dapat menggunakan array yang membuat query menjadi lebih mudah untuk dibuat dan dibaca. </span>Syntax ini dapat memisahkan setiap elemen dalam query (field, value, operator, dll) ke bagian yang bisa dimanipulasi. Salah satu contoh sederhana query berbasis array:</p>
<p>$conditions = array(&#8220;Post.title&#8221; =&gt; &#8220;This is a post&#8221;);</p>
<p>//Contoh penggunaan dalam suatu model:<br />
$this-&gt;Post-&gt;find($conditions);</p>
<p>Kode di atas menjelaskan bahwa query akan mencari dalam Model Post yang mempunyai Title=”This is a post”. Untuk diperhatikan, bahwa lebih baik jika anda melakukan query dalam Cake selalu merujuk kepada Model, bukan tabel. <span>Ini untuk menghindari terjadinya collision dalam aplikasi anda. </span>Ok, lalu bagaimana jika kita ingin menggunakan operator? Hal tersebut sama mudahnya. Katakan jika kita ingin menemukan seluruh Post dimana title nya <strong>bukan</strong> “This is a post”:</p>
<p>array(&#8220;Post.title&#8221; =&gt; &#8221; This is a post&#8221;)</p>
<p>Cake dapat menangani semua operator pembanding SQL, termasuk ekspresi seperti LIKE, BETWEEN, atau REGEX. <span>Yang jadi catatan adalah <strong>jangan lupa memberi spasi antara operator dan ekspresi atau value</strong>. </span>Satu-satunya pengualian disini adalah ekspresi IN (…). Baik, sekarang kita ingin mencari Post dengan beberapa value:</p>
<p>array(&#8220;Post.title&#8221; =&gt; array(&#8220;First post&#8221;, &#8220;Second post&#8221;, &#8220;Third post&#8221;))</p>
<p>Jika kita ingin membatasi lagi pencarian lagi caranya hanya dengan menambahkan pasangan key/value ke array:</p>
<p>array(<span> </span>&#8220;Post.title&#8221;<span> </span>=&gt; array(&#8220;First post&#8221;, &#8220;Second post&#8221;, &#8220;Third post&#8221;),<span> </span>&#8220;Post.created&#8221; =&gt; &#8220;&gt; &#8221; . date(&#8216;Y-m-d&#8217;, strtotime(&#8220;-2 weeks&#8221;)))</p>
<p>Secara default, Cake menggunakan operator Boolean <strong>AND</strong> untuk operasi join seperti di atas. <span>Jika kita ingin memakai operator Boolean lain, maka bisa dengan cara seperti ini:</span></p>
<p>array(&#8220;or&#8221; =&gt;<span> </span>array<span> </span>( <span> </span>&#8220;Post.title&#8221; =&gt; array(&#8220;First post&#8221;, &#8220;Second post&#8221;, &#8220;Third post&#8221;),<span> </span>&#8220;Post.created&#8221; =&gt; &#8220;&gt; &#8221; . date(&#8216;Y-m-d&#8217;, strtotime(&#8220;-2 weeks&#8221;))<span> </span>))</p>
<p>Cake menerima semua operand Boolean, seperti AND, OR, NOT, XOR, dll., dan bisa ditulis huruf kapital maupun tidak.Kondisi ini juga dapat dibuat bersarang. Berikut adalah contoh untuk query dengan tabel Posts dan Authors punya hubungan hasMany/belongTo, yang akan menghasilkan LEFT JOIN pada sisi Post. Kondisinya adalah anda ingin mencari kata ‘magic’ <strong>atau</strong> yang dibuat dua minggu yang lalu, tapi dibatasi pada Post yang ditulis oleh ‘Bob’:</p>
<p>array (&#8220;Author.name&#8221; =&gt; &#8220;Bob&#8221;, &#8220;or&#8221; =&gt; array<span> </span>(<span> </span>&#8220;Post.title&#8221; =&gt; &#8220;LIKE %magic%&#8221;,<span> </span>&#8220;Post.created&#8221; =&gt; &#8220;&gt; &#8221; . date(&#8216;Y-m-d&#8217;, strtotime(&#8220;-2 weeks&#8221;)<span> </span>))</p>
<h3>Menyimpan Data</h3>
<p>Untuk menyimpan data ke dalam model, tentu anda harus mengisinya dengan data yang ingin anda simpan. Data yang disimpan dengan method save() menghasilkan bentuk seperti berikut:</p>
<p>Array(<span> </span>[NamaModel] =&gt; Array<span> </span>(<span> </span>[namafield1] =&gt; &#8216;value&#8217;<span> </span>[namafield2] =&gt; &#8216;value&#8217;<span> </span>))</p>
<p>Cara paling mudah untuk mendapatkan data seperti ini adalah dengan menggunakan helper HTML (akan dibahas setelah pembahasan MVC), karena akan membuat elemen-elemen form yang namanya sesuai dengan aturan di Cake. Anda tidak harus menggunakannya: pada pokoknya hanya pastikan nama elemen formnya berbentuk seperti <strong>data[NamaModel][namafield].</strong> Namun bagaimanapun juga $html-&gt;input(&#8216;Model/fieldname&#8217;) adalah cara termudah.</p>
<p>Data yang dikirim dari form secara otomatis akan terformat seperti di atas dan diletakkan dalam $this-&gt;data didalam Controller. Berikut contoh fungsi edit pada Controller Property:</p>
<p>function edit($id)<br />
{</p>
<p>//Catatan: Model Property secara otomatis diletakkan oleh Cake ke $this-&gt;Property.</p>
<p>// Mengecek apakah form diisi data&#8230;<br />
if (empty($this-&gt;data))<br />
{<br />
$this-&gt;Property-&gt;id = $id;<br />
$this-&gt;data = $this-&gt;Property-&gt;read();//membaca field pada form<br />
}<br />
else<br />
{<br />
// Perhatikan cara menyimpan data berikut. Cake juga secara otomatis dapat melakukan validasi checking<br />
if ($this-&gt;Property-&gt;save($this-&gt;data['Property']))<br />
{<br />
//Pesan Flash yang ditampilkan dan redirect.<br />
$this-&gt;flash(&#8216;Your information has been saved.&#8217;,<br />
&#8216;/properties/view/&#8217;.$this-&gt;data['Property']['id'], 2);<br />
}<br />
//jika ada field yang invalid atau gagal menyimpan, Cake juga akan merender halaman error.<br />
}<br />
}</p>
<p><span>Perhatikan bagaimana operasi menyimpan ini terletak pada suatu kondisional validasi sesuai aturan yang telah dibuat. </span>Lebih lanjut tentang Validasi Data akan dibahas nanti. <span>Sekarang jika anda tidak ingin save() memvalidasi data anda gunakan <strong>save($data, false)</strong>.</span></p>
<p>Beberapa fungsi lain yang berguna:</p>
<ul type="disc">
<li class="MsoNormal"><strong>del</strong>
<ul type="circle">
<li class="MsoNormal">string <em>$id</em></li>
<li class="MsoNormal">boolean <em>$cascade</em></li>
</ul>
</li>
</ul>
<p>Menghapus model sesuai $id.</p>
<p>Jika Model mempunyai ke Model-Model lain, dan ‘dependent key’ telah terdeklarasikan dalam array asosiasi, maka method del() ini akan menghapus Model-Model lain tersebut jika $cascade diset ‘true’.</p>
<p>del() akan mengembalikan nilai true jika sukses.</p>
<p class="MsoNormal" style="margin-left:18pt;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-family:Symbol;"><span>·<span> </span></span></span><!--[endif]--><strong>saveField</strong></p>
<p class="MsoNormal" style="margin-left:54pt;text-indent:-18pt;"><!--[if !supportLists]--><span><span>o<span> </span></span></span><!--[endif]-->string <em>$name</em></p>
<p class="MsoNormal" style="margin-left:54pt;text-indent:-18pt;"><!--[if !supportLists]--><span><span>o<span> </span></span></span><!--[endif]-->string <em>$value</em></p>
<p>Digunakan untuk menyimpan nilai field tunggal.</p>
<p class="MsoNormal" style="margin-left:18pt;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-family:Symbol;"><span>·<span> </span></span></span><!--[endif]--><strong>getLastInsertId</strong></p>
<p>Mengembalikan nilai ID dari record yang terakhir dibuat.</p>
<h3>Callback Model</h3>
<p>Dalam Model Cake, dikenal juga Callback yang memperbolehkan anda untuk melakukan sesuatu sebelum atau setelah suatu operasi. Berikut method Callback dalam Cake:.</p>
<p class="MsoNormal" style="margin-left:18pt;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-family:Symbol;"><span>·<span> </span></span></span><!--[endif]--><strong>beforeFind</strong></p>
<p class="MsoNormal" style="margin-left:54pt;text-indent:-18pt;"><!--[if !supportLists]--><span><span>o<span> </span></span></span><!--[endif]-->string <em>$conditions</em></p>
<p>Set ke ‘return true’ ketika anda ingin method find dieksekusi, dan ‘false’ jika ingin menghentikan perintah<span> </span>find.</p>
<p class="MsoNormal" style="margin-left:18pt;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-family:Symbol;"><span>·<span> </span></span></span><!--[endif]--><strong>afterFind</strong></p>
<p class="MsoNormal" style="margin-left:54pt;text-indent:-18pt;"><!--[if !supportLists]--><span><span>o<span> </span></span></span><!--[endif]-->array <em>$results</em></p>
<p>Gunakan method callback yang satu ini jika ingin memodifikasi hasil operasi find() atau jika ingin melakukan operasi lain terhadap hasil find(). Parameter untuk method ini tentu saja hasil operasi find, dan keluarannya berupa hasil yang sudah diubah.</p>
<ul type="disc">
<li class="MsoNormal"><strong>beforeValidate</strong></li>
</ul>
<p>Gunakan callback ini untuk memodifikasi data Model sebelum divalidasi. Bisa juga digunakan untuk aturan validasi yang lebih kompleks, menggunakan <strong>Model::invalidate()</strong>.Dalam konteks ini, data Model dapat diakses melalui <strong>$this-&gt;data</strong>. Method ini juga harus diset ke true, dan sebaliknya false jika ingin menghentikan save()..</p>
<ul type="disc">
<li class="MsoNormal"><strong>beforeSave</strong></li>
</ul>
<p>Callback ini juga diset ke true jika operasi save() ingin berlanjut, dan false jika ingin digagalkan. Contoh penggunaan beforeSave dalam penanganan format waktu di suatu database:</p>
<pre>// Berikut adalah field Date/time yang dibuat helper HTML:

// Kode ini akan dilihat di View

$html-&gt;dayOptionTag('Event/start');

$html-&gt;monthOptionTag('Event/start');

$html-&gt;yearOptionTag('Event/start');

$html-&gt;hourOptionTag('Event/start');

$html-&gt;minuteOptionTag('Event/start');

/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/

// Kode berikut akan ada di Model Event, callback beforeSave digunakan untuk merubah format waktu sebelum disimpan ke database:

function beforeSave()

{

 $this-&gt;data['Event']['start'] = $this-&gt;_getDate('Event', 'start');

 return true;

}

function _getDate($model, $field)

{

 return date('Y-m-d H:i:s', mktime(

     intval($this-&gt;data[$model][$field . '_hour']),

     intval($this-&gt;data[$model][$field . '_min']),

     null,

     intval($this-&gt;data[$model][$field . '_month']),

     intval($this-&gt;data[$model][$field . '_day']),

     intval($this-&gt;data[$model][$field . '_year'])));

}</pre>
<ul type="disc">
<li class="MsoNormal"><strong>afterSave</strong></li>
</ul>
<ul type="disc">
<li class="MsoNormal"><strong>beforeDelete</strong></li>
</ul>
<p>Set ke ‘return true’ ketika anda ingin penghapusan dieksekusi, dan ‘false’ jika ingin menghentikan perintah<span> </span>penghapusan.</p>
<ul type="disc">
<li class="MsoNormal"><strong>afterDelete</strong></li>
</ul>
<h4>Section 3</h4>
<h3>Variabel Model</h3>
<p>Ketika anda bekerja dengan Model, ada sejumlah variabel yang bisa anda manfaatkan untuk mendapat fungsi khusus dari Cake.</p>
<p><strong><span> </span>$primaryKey</strong></p>
<p>Jika suatu Model merupakan suatu tabel dalam database, dan primary key tabel tersebut tidak bernama ‘id’, anda bisa guakan variabel ini untuk memberitahukan Cake nama primary key-nya.</p>
<p><strong>$recursive</strong></p>
<p>Variabel ini mengatur kedalaman tingkat pengambilan Model yang terasosiasi ketika menggunakan operasi find() dan findAll().</p>
<p>Contoh : seandainya anda mempunyai Groups yang mempunyai banyak Users yang masing-masing mempunyai Articles.</p>
<h3>Opsi dalam Model::recursive</h3>
<table class="MsoNormalTable" border="0" cellpadding="0">
<tbody>
<tr>
<td style="padding:0.75pt;">
<p class="MsoNormal">$recursive = 0</p>
</td>
<td style="padding:0.75pt;">
<p class="MsoNormal">Cake mengambil data Group</p>
</td>
</tr>
<tr>
<td style="padding:0.75pt;">
<p class="MsoNormal">$recursive = 1</p>
</td>
<td style="padding:0.75pt;">
<p class="MsoNormal">Cake mengambil sebuah Group dan User yang terasosiasi</p>
</td>
</tr>
<tr>
<td style="padding:0.75pt;">
<p class="MsoNormal">$recursive = 2</p>
</td>
<td style="padding:0.75pt;">
<p class="MsoNormal">Cake mengambil sebuah Group, User yang terasosiasi, dan   Articles yang dimiliki User tersebut</p>
</td>
</tr>
</tbody>
</table>
<p><strong>$transactional</strong></p>
<p>Memberitahukan Cake apakah Model dapat melakukan transaksi atau tidak (seperti begin/commit/rollback). Menggunakan nilai Boolean. Hanya dapat untuk database tertentu.</p>
<p><strong>$useTable</strong></p>
<p>Jika tabel dalam database anda tidak berbentuk plural/mendapat akhiran ‘s’, dan anda tidak ingin menggantinya, set lah variabel ini ke nama tabel yang ingin anda gunakan.</p>
<p><strong>$validate</strong></p>
<p>Merupakan array yang digunakan untuk memvalidasi data ke model (akan ada pembahasan lebih lanjut di Chapter lain).</p>
<p><strong>$useDbConfig</strong></p>
<p>Masih ingat setting database pada Chapter sebelumnya di /<strong>app/config/database.php</strong>? Gunakan variabel ini untuk berpindah antara nama koneksi database yang ada di file tersebut. Nilai defaultnya adalah ‘default’.</p><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/yayakmpf.wordpress.com/46/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/yayakmpf.wordpress.com/46/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yayakmpf.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yayakmpf.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/yayakmpf.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/yayakmpf.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/yayakmpf.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/yayakmpf.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/yayakmpf.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/yayakmpf.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/yayakmpf.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/yayakmpf.wordpress.com/46/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yayakmpf.wordpress.com&blog=3711654&post=46&subd=yayakmpf&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://yayakmpf.wordpress.com/2008/05/12/konsep-dasar-cakephp-bag-iv/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/443d3dd1ecde2ee75f5d9743008637c0?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">yayakmpf</media:title>
		</media:content>
	</item>
		<item>
		<title>Konsep Dasar CakePHP (bag III)</title>
		<link>http://yayakmpf.wordpress.com/2008/05/12/konsep-dasar-cakephp-bag-iii/</link>
		<comments>http://yayakmpf.wordpress.com/2008/05/12/konsep-dasar-cakephp-bag-iii/#comments</comments>
		<pubDate>Mon, 12 May 2008 03:15:00 +0000</pubDate>
		<dc:creator>yayakmpf</dc:creator>
				<category><![CDATA[CakePHP]]></category>

		<guid isPermaLink="false">http://yayakmpf.wordpress.com/2008/05/12/konsep-dasar-cakephp-bag-iii/</guid>
		<description><![CDATA[Sebelum memulai konfigurasi di Cake, saya minta anda untuk membuat suatu database bernama ‘blogcake’ lebih dulu. Silahkan buka phpMyAdmin dari web browser anda, cari kolom Create new database, ketik blogcake, kemudian klik tombol create. Jika benar, anda akan lanjut ke halaman baru yang menyatakan anda telah sukses membuat database baru dan anda sudah langsung memakai [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yayakmpf.wordpress.com&blog=3711654&post=45&subd=yayakmpf&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Sebelum memulai konfigurasi di Cake, saya minta anda untuk membuat suatu database bernama <b>‘blogcake’</b> lebih dulu. Silahkan buka phpMyAdmin dari web browser anda, cari kolom <b>Create new database</b>, ketik <b>blogcake</b>, kemudian klik tombol <b>create</b>. Jika benar, anda akan lanjut ke halaman baru yang menyatakan anda telah sukses membuat database baru dan anda sudah langsung memakai database tersebut. Sekarang klik tab <b>SQL</b> yang ada di atas frame sebelah kanan. Copy <i>query</i> berikut dan paste ke text area di halaman tersebut.
<p class="MsoNormal"> CREATE TABLE posts (  </p>
<p class="MsoNormal"><span>    </span>id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,</p>
<p class="MsoNormal"><span>    </span>title VARCHAR(50),</p>
<p class="MsoNormal"><span>    </span>body TEXT,</p>
<p class="MsoNormal"><span>    </span>created DATETIME DEFAULT NULL,</p>
<p class="MsoNormal"><span>    </span>modified DATETIME DEFAULT NULL</p>
<p class="MsoNormal">);</p>
<p class="MsoNormal">
<p class="MsoNormal">/* Kemudian masukkan beberapa Post untuk testing*/</p>
<p class="MsoNormal">INSERT INTO posts (title,body,created)</p>
<p class="MsoNormal"><span>    </span>VALUES (&#8216;The title&#8217;, &#8216;This is the post body.&#8217;, NOW());</p>
<p class="MsoNormal">INSERT INTO posts (title,body,created)</p>
<p class="MsoNormal"><span>    </span>VALUES (&#8216;A title once again&#8217;, &#8216;And the post body follows.&#8217;, NOW());</p>
<p class="MsoNormal">INSERT INTO posts (title,body,created)</p>
<p class="MsoNormal"><span>    </span>VALUES (&#8216;Title strikes back&#8217;, &#8216;This is really exciting! Not.&#8217;, NOW());</p>
<p>Klik <b>go</b>. Selanjutnya baru kita memulai tahap konfigurasinya.
<p class="MsoNormal"></p>
<p> <span style="font-weight:bold;">Section 1</span><br />
<h3>Konfigurasi Database</h3>
<p class="MsoNormal"><span>Konfigurasi database pada Cake terdapat pada file <b>app/config/database.php</b>. Namun pada instalasi awal Cake tidak terdapat file tersebut, jadi anda harus mengcopy dari file <b>database.php.default</b>. Ubah namanya menjadi <b>database.php</b> saja.Buka file tersebut dengan web editor anda (Dreamweaver, Notepad++, EditPlus, atau yang lain) lihat pada bagian:</span></p>
<p class="MsoNormal"><span> </span></p>
<p class="MsoNormal"><span>var $default = array(&#8216;driver&#8217;<span>   </span>=&gt; &#8216;mysql&#8217;,</span></p>
<p class="MsoNormal"><span><span>                     </span>&#8216;connect&#8217;<span>  </span>=&gt; &#8216;mysql_connect&#8217;,</span></p>
<p class="MsoNormal"><span><span>                     </span>&#8216;host&#8217;<span>     </span>=&gt; &#8216;localhost&#8217;,</span></p>
<p class="MsoNormal"><span><span>                     </span>&#8216;login&#8217;<span>    </span>=&gt; &#8216;user&#8217;,</span></p>
<p class="MsoNormal"><span><span>                     </span>&#8216;password&#8217; =&gt; &#8216;password&#8217;,</span></p>
<p class="MsoNormal"><span><span>                     </span>&#8216;database&#8217; =&gt; &#8216;project_name&#8217;,</span></p>
<p class="MsoNormal"><span><span>              </span><span>       </span>&#8216;prefix&#8217;<span>   </span>=&gt; &#8221;);</span></p>
<p class="MsoNormal"><span> </span></p>
<p class="MsoNormal">Ubah bagian <b>login</b> dan <b>password</b> sesuai setting MySQL anda. Kemudian <b>‘project_name’</b> pada <b>database</b> menjadi <b>blogcake</b> seperti yang sudah kita buat tadi.</p>
<p class="MsoNormal">Catatan untuk variabel <b>’prefix’</b> : jika anda memasukkan string ke dalamnya, maka jika anda melakukan query SQL untuk tabel akan mengarah ke <i>prefix_namatabel</i>. <span>Contoh jika anda punya tabel <i>posts</i> seperti di atas, dan <i>’prefix’=&gt;’blog_’, maka query akan mengarah ke ‘blog_posts’. </i></span><i>Sekali anda mendefinisikan prefix, keseluruhan tabel dalam database harus mendapat imbuhan prefix tersebut. Dan untuk tabel HABTM join, anda cukup menambah prefix sekali: <b>blog_categories_posts</b>, bukan <b>blog_categories_blog_posts</b>.</i></p>
<p><i>  </i>
<p><i>CakePHP mendukung beberapa driver dabatabase berikut:</i></p>
<p><i>  </i>
<p style="margin-left:36pt;text-indent:-18pt;"><!--[if !supportLists]--><span><i>1.<span>      </span></i></span><!--[endif]--><i>mysql</i></p>
<p><i>  </i>
<p style="margin-left:36pt;text-indent:-18pt;"><!--[if !supportLists]--><span><i>2.<span>      </span></i></span><!--[endif]--><i>postgres</i></p>
<p><i>  </i>
<p style="margin-left:36pt;text-indent:-18pt;"><!--[if !supportLists]--><span><i>3.<span>      </span></i></span><!--[endif]--><i>sqlite</i></p>
<p><i>  </i>
<p style="margin-left:36pt;text-indent:-18pt;"><!--[if !supportLists]--><span><i>4.<span>      </span></i></span><!--[endif]--><i>pear-<strong>drivername</strong> (contoh pear-mysql)</i></p>
<p><i>  </i>
<p style="margin-left:36pt;text-indent:-18pt;"><!--[if !supportLists]--><span><i>5.<span>      </span></i></span><!--[endif]--><i>adodb-<strong>drivername</strong></i></p>
<p><i>  </i>
<p><i>Kata kunci &#8216;connect&#8217; pada koneksi <strong>$default</strong> mempersilahkan anda untuk menentukan apakah koneksi akan persistent atau tidak. (Baca komentar pada file database.php untuk menentukan tipe koneksi lebih lanjut). Sementara pada tutorial ini, kita isi dengan <i>‘mysql_connect’</i> saja.</i></p>
<p><i>  </i>
<p><i>Selain itu, tabel dalam database anda juga harus mengikuti konvensi yang digunakan Cake. Memang kelihatannya cukup merepotkan pada mulanya, namun anda cukup percaya saja, kelak anda akan merasakan manfaatnya ketika memulai memaintenance aplikasi web anda, dan anda akan ‘tersihir’ bagaimana Cake dapat menghasilkan aplikasi berskala besar dengan cepatnya jika anda benar-benar mengikuti aturan Cake.Selain itu, anda bisa mendaftarkan aplikasi anda ke komunitas open source Cake. Ok, inilah aturan untuk tabel:</i></p>
<p><i>  </i>
<p style="margin-left:36pt;text-indent:-18pt;"><!--[if !supportLists]--><span><i>1.<span>      </span></i></span><!--[endif]--><i>Nama tabel biasanya berupa kata jamak/plural dalam bahasa Inggris, seperti “users, posts, polls”. Sebenarnya dalam bahasa Indonesia pun tidak masalah, cukup dengan menambahkan akhiran –s dibelakang nama tabel, contoh: “artikels, divisis, kategories”. Namun untuk Model (ingat konsep MVC-nya) untuk tabel yang bersangkutan nama modelnya berupa kata tunggal.</i></p>
<p><i>  </i>
<p style="margin-left:36pt;text-indent:-18pt;"><!--[if !supportLists]--><span><i>2.<span>      </span></i></span><!--[endif]--><i>Dalam tabel harus ada primary key bernama ‘id’.</i></p>
<p><i>  </i>
<p style="margin-left:36pt;text-indent:-18pt;"><!--[if !supportLists]--><span><i>3.<span>      </span></i></span><!--[endif]--><i>Jika ada relasi, gunakan foreign key seperti ‘article_id’. Nama tabel berupa kata tunggal/singular, diikuti underscore, kemudian diakhiri ‘id’.</i></p>
<p><i>  </i>
<p style="margin-left:36pt;text-indent:-18pt;"><!--[if !supportLists]--><span><i>4.<span>      </span></i></span><!--[endif]--><i>Jika dalam tabel terdapat kolom ‘created’ dan/atau ‘modified’, Cake secara otomatis akan mengisinya sesuai dengan keadaan.</i></p>
<p><i>  </i>
<p><i>Selain <b>$default</b> dalam database.php, anda juga akan melihat seting $test connection di bawahnya. <span>Silahkan isi sesuka anda dengan aturan sama seperti di atas, kemudian anda bisa menggunakannya dengan cara seperti:</span></i></p>
<p><i><span>var $useDbConfig = &#8216;test&#8217;;</span></i></p>
<p><span class="fullpost"><span>Sampai disini, kita akan kembali mengetes instalasi Cake kita. Jika benar, anda akan mendapatkan hasil seperti ini:</span></span></p>
<p><a href="http://bp1.blogger.com/_qMX3iSEw_Co/SCe38R8P8OI/AAAAAAAAAEE/yhK1OfqePII/s1600-h/cake_able.jpg"><img style="display:block;text-align:center;cursor:pointer;margin:0 auto 10px;" src="http://bp1.blogger.com/_qMX3iSEw_Co/SCe38R8P8OI/AAAAAAAAAEE/yhK1OfqePII/s320/cake_able.jpg" alt="" border="0" /></a><i>Section 2</i>
<p class="MsoNormal"><span></span></p>
<p><i>  </i>
<p class="MsoNormal"><span><br />
<h3><i>Konfigurasi Umum</i></h3>
<p></span></p>
<p><i>  </i>
<p><i>Konfigurasi umum/global Cake dapat ditemukan pada file <strong>app/config/core.php. </strong><strong><span style="font-weight:normal;">Sebenarnya tidak ada yang anda perlu ubah untuk tutorial ini, namun saya akan tetap memberitahu anda beberapa point penting di file ini.</span></strong></i></p>
<p><i>  </i>
<p><i><strong><span style="font-weight:normal;">DEBUG: defaultnya bernilai ‘1’, akan menampilkan pesan kesalahan pada kode yang anda buat pada aplikasi anda. Jika anda mengeset ke ‘2’, maka hasil query SQL akan ditampilkan di sisi bawah layar halaman. Selain 0, Cake akan merender error page sesuai kesalahan code pada aplikasi anda, seperti “Missing Controller”, “Missing Action”, dll.</span></strong></i></p>
<p><i>  </i>
<p><i>CAKE_SESSION_COOKIE: ubah nilainya ke nama cookie yang anda gunakan untuk user session di aplikasi anda.</i></p>
<p><i>  </i>
<p><i>CAKE_SECURITY: ubah nilai ini untuk menentukan pengecekan level session. Cake akan menentukan akhir session, menggenerate session ids baru, dan menghapus session lama berdasar nilai yang anda masukkan. Nilai yang bisa anda tulis adalah:</i></p>
<p><i>  </i>
<p style="margin-left:36pt;text-indent:-18pt;"><!--[if !supportLists]--><span><i>1.<span>      </span></i></span><!--[endif]--><i>high: session akan berakhir setelah 10 menit dari tidak adanya aktifitas apapun, session ids diregenerasi pada setiap request.</i></p>
<p><i>  </i>
<p style="margin-left:36pt;text-indent:-18pt;"><!--[if !supportLists]--><span><i>2.<span>      </span></i></span><!--[endif]--><i>medium: session akan berakhir setelah 20 menit dari tidak adanya aktifitas apapun.</i></p>
<p><i>  </i>
<p style="margin-left:36pt;text-indent:-18pt;"><!--[if !supportLists]--><span><i>3.<span>      </span></i></span><!--[endif]--><i>low: session akan berakhir setelah 30 menit dari tidak adanya aktifitas apapun.</i></p>
<p><i>  </i>
<p><i>CAKE_SESSION_SAVE: menentukan bagaimana data session akan disimpan. Silahkan memasukkan salah satu nilai berikut (urut dari yang paling low-security sampai high-security):</i></p>
<p><i>  </i>
<p style="margin-left:36pt;text-indent:-18pt;"><!--[if !supportLists]--><span><span><i>1.<span>      </span></i></span></span><!--[endif]--><span><i>cake: data session akan disimpan dalam tmp/ di instalasi Cake anda.</i></span></p>
<p><i>  </i>
<p style="margin-left:36pt;text-indent:-18pt;"><!--[if !supportLists]--><span><span><i>2.<span>      </span></i></span></span><!--[endif]--><span><i>php: data session akan disimpan sesuai definisi php.ini.</i></span></p>
<p><i>  </i>
<p style="margin-left:36pt;text-indent:-18pt;"><!--[if !supportLists]--><span><span><i>3.<span>      </span></i></span></span><!--[endif]--><span><i>database: data session akan disimpan ke suatu tabel sesuai di variabel $default, biasanya bernama cake_sessions. Di artikel lain saya akan mencontohkan penggunaan database untuk penanganan sessions. Namun sementara ini kita setting ke ‘php’ dulu.</i></span></p>
<p><span style="font-weight:bold;">Section 3</span><span class="fullpost">
<p><span></span></p>
<p><i>  </i>
<p><span><br />
<h3><i>Konfigurasi Routing</i></h3>
<p></span></p>
<p><i>  </i>
<p><span><i>Routing merupakan bagian dari mod_rewrite PHP </i></span><i>yang dapat ‘memetakan’ URL ke <i>controller/action/params</i>. Dengan routing URL bisa lebih cantik dan lebih dapat dikonfigurasi. Routing dapat ditentukan lewat file <b>app/config/routes.php</b>. Pattern/pola yang digunakan untuk routing seperti berikut:</i></p>
<p><i>$Route-&gt;connect (&#8216;URL&#8217;, array(&#8216;controller&#8217;=&gt;&#8217;controllername&#8217;, &#8216;action&#8217;=&gt;&#8217;actionname&#8217;, &#8216;firstparam&#8217;))</i></p>
<p></span>
<p><i>Dimana:</i></p>
<p><i>  </i>
<p style="margin-left:36pt;text-indent:-18pt;"><!--[if !supportLists]--><span><i>1.<span>      </span></i></span><!--[endif]--><i>URL adalah regular expression (regex) dari URL Cake yang akan anda petakan,</i></p>
<p><i>  </i>
<p style="margin-left:36pt;text-indent:-18pt;"><!--[if !supportLists]--><span><i>2.<span>      </span></i></span><!--[endif]--><i>controllername adalah nama controller yang anda akan sertakan</i></p>
<p><i>  </i>
<p style="margin-left:36pt;text-indent:-18pt;"><!--[if !supportLists]--><span><i>3.<span>      </span></i></span><!--[endif]--><i>actionname adalah nama action dari controller</i></p>
<p><i>  </i>
<p style="margin-left:36pt;text-indent:-18pt;"><!--[if !supportLists]--><span><i>4.<span>      </span></i></span><!--[endif]--><i>firstparam adalah nilai parameter pertama dari action yang anda tentukan</i></p>
<p><i>  </i>
<p><i>Parameter lain yang menyertai firstparam akan dipassing sebagai parameter ke action controller.</i></p>
<p><i>  </i>
<p><span><i>Dalam tutorial ini tidak ada yang perlu diubah dari file konfigurasi routing tersebut.</i></span><i><span style="font-weight:bold;"><br /></span></i></p>
<p><i><span style="font-weight:bold;">Section 4</span></i></p>
<p><span class="fullpost"><i>  </i><br />
<h3><i>Konfigurasi Routing Lanjut: Admin dan Webservices</i></h3>
<p><i>  </i>
<p><i>Masih dalam file yang sama (/app/config.core.php) anda bisa mengatur penanganan URL untuk admin dan webservices. Hal pertama yang kita bahas adalah routing URL admin. Tentu dalam aplikasi yang kita buat, ada hak istimewa sebagai admin yang kita berikan kepada user tertentu (Lebih lanjut tentang pemberian hak akses akan kita pelajari di fitur ACL=Access Control List). Biasanya saya lebih menyukai URL berbentuk /admin/posts/add atau /admin/posts/edit daripada /posts/adminAdd atau /posts/adminEdit.</i></p>
<p><i>  </i>
<p><i>Untuk mengaktifkan fungsi ini di Cake, yang pertama kali dilakukan adalah menghilangkan komentar berupa tanda double slash (//) dari CAKE_ADMIN pada file /app/config/core.php. Nilai default dari CAKE_ADMIN ini adalah ‘admin’, tapi anda juga bisa mengubahnya ke nilai lain yang anda suka, seperti ‘superuser’, ‘su’, ‘atur’, dll. Ingatlah nilai yang anda masukkan ini, karena akan digunakan untuk controller (akan dibahas nanti). Nantinya, action dari admin ini akan bernama namaadmin_namaaction(). Berikut beberapa contoh URL, CAKE_ADMIN, dan action di controller:</i></p>
<p><span class="fullpost">
<p><span>/admin/products/add<span>          </span>CAKE_ADMIN = &#8216;admin&#8217;</span></p>
<p><span>Nama action di ProductsController = &#8216;admin_add()&#8217;</span></p>
<p><span> <br />/superuser/news/post<span>         </span>CAKE_ADMIN = &#8217;superuser&#8217;</span></p>
<p><span>Nama action di NewsController = &#8217;superuser_post()&#8217;</span></p>
<p><span> <br />/su/posts/delete<span>          </span>CAKE_ADMIN = &#8217;su&#8217;</span></p>
<p><span>Nama action di PostsController = &#8217;su_delete()&#8217;</span></p>
<p>  <i>  </i>
<p><i><br /></i></p>
<p><i>Setelah diset variabel CAKE_ADMIN, maka anda dapat dengan mudah menggunakan routing admin ini dengan menggunakan:</i></p>
<p><i>  </i>
<p class="MsoNormal"><span><i>$this-&gt;params[CAKE_ADMIN];</i></span></p>
<p><i>  </i>
<p class="MsoNormal"><i>atau</i></p>
<p><i>  </i>
<p class="MsoNormal"><span><i>$this-&gt;params['admin'];</i></span></p>
<p><i>  </i>
<p class="MsoNormal"><i>(dengan anggapan bahwa ‘admin adalah variabel dari CAKE_ADMIN). </i></p>
<p><i>  </i>
<p><i>Sesuai dengan catatan dari manual yang ada pada situs CakePHP.org bahwa dengan mengaktifkan routing admin ini tidak berarti anda menggunakan metode otentifikasi ataupun security tertentu. Anda harus mengesetnya sendiri, yang akan dijelaskan di chapter lain. (Sekali lagi) Sabar… </i></p>
<p><i>  </i>
<p><i>Dengan cara yang sama, anda dapat mengaktifkan routing untuk fitur webservices sama mudahnya. Pertama, set WEBSERVICES di file yang sama ke ‘on’, kemudian anda tinggal menambahkan beberapa logic di Controller anda. Jadi, dengan mengaktifkan WEBSERVICES ini anda mengaktifkan suatu hal yang hampir sama dengan routing admin, kecuali beberapa prefix untuk routing ini sudah tersedia, seperti:</i></p>
<p><i>  </i>
<p style="margin-left:36pt;text-indent:-18pt;"><!--[if !supportLists]--><span><i>1.<span>      </span></i></span><!--[endif]--><i>rss</i></p>
<p><i>  </i>
<p style="margin-left:36pt;text-indent:-18pt;"><!--[if !supportLists]--><span><i>2.<span>      </span></i></span><!--[endif]--><i>xml</i></p>
<p><i>  </i>
<p style="margin-left:36pt;text-indent:-18pt;"><!--[if !supportLists]--><span><i>3.<span>      </span></i></span><!--[endif]--><i>rest</i></p>
<p><i>  </i>
<p style="margin-left:36pt;text-indent:-18pt;"><!--[if !supportLists]--><span><i>4.<span>      </span></i></span><!--[endif]--><i>soap</i></p>
<p><i>  </i>
<p style="margin-left:36pt;text-indent:-18pt;"><!--[if !supportLists]--><span><i>5.<span>      </span></i></span><!--[endif]--><i>xmlrpc</i></p>
<p><i>  </i>
<p><i>Nantinya anda akan punya alternative View yang bisa diakses pada /rss/namaController/namaAction atau /soap/namaController/namaAction. Anda cukup membuat satu action untuk dua view: satu untuk halaman HTML biasa, dan yang lain untuk pemakai webservice.</i></p>
<p></span></p>
<p></span></p><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/yayakmpf.wordpress.com/45/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/yayakmpf.wordpress.com/45/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yayakmpf.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yayakmpf.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/yayakmpf.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/yayakmpf.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/yayakmpf.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/yayakmpf.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/yayakmpf.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/yayakmpf.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/yayakmpf.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/yayakmpf.wordpress.com/45/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yayakmpf.wordpress.com&blog=3711654&post=45&subd=yayakmpf&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://yayakmpf.wordpress.com/2008/05/12/konsep-dasar-cakephp-bag-iii/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/443d3dd1ecde2ee75f5d9743008637c0?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">yayakmpf</media:title>
		</media:content>

		<media:content url="http://bp1.blogger.com/_qMX3iSEw_Co/SCe38R8P8OI/AAAAAAAAAEE/yhK1OfqePII/s320/cake_able.jpg" medium="image" />
	</item>
		<item>
		<title>Konsep Dasar CakePHP (bag II)</title>
		<link>http://yayakmpf.wordpress.com/2008/05/12/konsep-dasar-cakephp-bag-ii/</link>
		<comments>http://yayakmpf.wordpress.com/2008/05/12/konsep-dasar-cakephp-bag-ii/#comments</comments>
		<pubDate>Mon, 12 May 2008 02:55:00 +0000</pubDate>
		<dc:creator>yayakmpf</dc:creator>
				<category><![CDATA[CakePHP]]></category>

		<guid isPermaLink="false">http://yayakmpf.wordpress.com/2008/05/12/konsep-dasar-cakephp-bag-ii/</guid>
		<description><![CDATA[Untuk melakukan instalasi CakePHP, dibutuhkan sebuah server yang memuat seluruh library dan program yang dibutuhkan untuk menjalankan CakePHP. Syarat yang harus dipenuhi dalam server itu adalah:


Sebuah server HTTP (seperti Apache) dengan session enabled dan mod_rewrite(mod_rewrite ini lebih disukai dalam keadaan enabled)
PHP 4.3.2 atau di atasnya (5.x)
Database      engine(MySQL, PostgreSQL, dan yang [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yayakmpf.wordpress.com&blog=3711654&post=44&subd=yayakmpf&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><div style="text-align:justify;">Untuk melakukan instalasi CakePHP, dibutuhkan sebuah server yang memuat seluruh library dan program yang dibutuhkan untuk menjalankan CakePHP. Syarat yang harus dipenuhi dalam server itu adalah:</p>
</div>
<ol style="margin-top:0;text-align:justify;" start="1" type="1">
<li class="MsoNormal">Sebuah server HTTP (seperti Apache) dengan session enabled dan mod_rewrite(mod_rewrite ini lebih disukai dalam keadaan enabled)</li>
<li class="MsoNormal"><span>PHP 4.3.2 atau di atasnya (5.x)</span></li>
<li class="MsoNormal">Database      engine(MySQL, PostgreSQL, dan yang mendukung ADODB)</li>
</ol>
<div style="text-align:justify;"><span class="fullpost">
<p class="MsoNormal">Setelah anda mendapatkan CakePHP dari chapter1 sebelumnya, sekarang letakkan file .ZIP atau bentuk file yang terkompres tersebut ke DocumentRoot/webroot anda. Kalau anda mengikuti memakai AppServ yang terinstal di C:\, maka dalam file httpd.conf apache biasanya sudah tersetting ke C:/appserv/www. Selanjutnya ada dua cara instalasi CakePHP: menggunakan development setup, yang mempersilahkan untuk melihat sekaligus beberapa aplikasi CakePHP dalam satu domain, atau dengan production setup, yang memperbolehkan satu aplikasi CakePHP dalam satu domain.</p>
<p class="MsoNormal">Sebelum mensetup Cake, pastikan mod_rewrite dalam httpd.conf Apache diperbolehkan. Caranya cari dalam folder instalasi Apache file <b>conf/httpd.conf</b>. Edit dengan notepad, hilangkan tanda pagar (#) di awal baris berikut:</p>
<pre> LoadModule rewrite_module modules/mod_rewrite.so</pre>
<p class="MsoNormal">Pastikan juga agar Apache mengijinkan akses .htaccess override. Di file yang sama, cari kata-kata <i>AllowOverride</i> pada  atau , set ke <i>All</i>, sehingga menjadi <span style="font-size:100%;"><i><span style="font-family:Courier;">AllowOverride All</span></i>.</span><span style="font-family:Courier;"></span></p>
<p class="MsoNormal"><span style="font-family:Courier;"> </span></p>
<p class="MsoNormal"><span> </span><span class="fullpost">Jika anda mengikuti langkah sebelumnya, untuk menginstal development setup anda tinggal mengekstrak ke folder /appserv/www. Sehingga nampak seperti berikut:</span></p>
<p></span><br /><span class="fullpost">
<p class="MsoNormal"><span class="fullpost">
<p class="MsoNormal"><span>/appserv</span></p>
<p class="MsoNormal"><span><span>     </span>    /www</span></p>
<p class="MsoNormal"><span><span>        </span>        /cake</span></p>
<p class="MsoNormal"><span><span>           </span>                /app</span></p>
<p class="MsoNormal"><span><span>           </span>                /cake</span></p>
<p class="MsoNormal"><span><span>           </span>                /vendors</span></p>
<p class="MsoNormal"><span><span>           </span>                .htaccess</span></p>
<p class="MsoNormal"><span><span style="font-size:100%;">           </span><span style="font-size:100%;">                index.php</span></span></p>
<p>Ketikkan localhost/cake pada browser anda, maka anda akan mendapatkan tampilan seperti berikut:</span></p>
<p></span><a href="http://bp0.blogger.com/_qMX3iSEw_Co/SCe1kB8P8NI/AAAAAAAAAD8/furkQjgT2VU/s1600-h/cake.jpg"><img style="display:block;text-align:center;cursor:pointer;margin:0 auto 10px;" src="http://bp0.blogger.com/_qMX3iSEw_Co/SCe1kB8P8NI/AAAAAAAAAD8/furkQjgT2VU/s320/cake.jpg" alt="" border="0" /></a><br /><span class="fullpost">
<p class="MsoNormal">(Perhatikan <b> Your database configuration file is not present </b>! Pesan tersebut muncul karena memang sampai sejauh ini kita belum mengonfigurasi database apa yang aka digunakan. Harap sabar…)</p>
<p>Nantinya, jika mod_rewrite dalam keadaan enabled, maka URL anda akan berbentuk seperti ini:</p>
<pre>
<pre><a href="http://www.example.com/cake/controllerName/actionName" rel="nofollow">http://www.example.com/cake/controllerName/actionName</a></pre>
</pre>
<p></span><br /><span class="fullpost">
<pre>
<pre>/param1/param2</pre>
</pre>
<p>Contoh jika kita membuat Controller bernama ‘posts’, action-nya ‘edit’, dan parameter-nya adalah ‘1’ di localhost/cake, maka bentuk URL-nya: localhost/cake/posts/edit/1</span><br /><span class="fullpost">(Sebenarnya ada beberapa cara lain untuk men-setup Cake ke dalam Web Server. Tapi untuk sementara kita pakai cara yang paling sering dan paling mudah digunakan dulu)</span></div><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/yayakmpf.wordpress.com/44/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/yayakmpf.wordpress.com/44/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yayakmpf.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yayakmpf.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/yayakmpf.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/yayakmpf.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/yayakmpf.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/yayakmpf.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/yayakmpf.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/yayakmpf.wordpress.com/44/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/yayakmpf.wordpress.com/44/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/yayakmpf.wordpress.com/44/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yayakmpf.wordpress.com&blog=3711654&post=44&subd=yayakmpf&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://yayakmpf.wordpress.com/2008/05/12/konsep-dasar-cakephp-bag-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/443d3dd1ecde2ee75f5d9743008637c0?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">yayakmpf</media:title>
		</media:content>

		<media:content url="http://bp0.blogger.com/_qMX3iSEw_Co/SCe1kB8P8NI/AAAAAAAAAD8/furkQjgT2VU/s320/cake.jpg" medium="image" />
	</item>
		<item>
		<title>Konsep Dasar CakePHP (bag I)</title>
		<link>http://yayakmpf.wordpress.com/2008/05/12/konsep-dasar-cakephp-bag-i/</link>
		<comments>http://yayakmpf.wordpress.com/2008/05/12/konsep-dasar-cakephp-bag-i/#comments</comments>
		<pubDate>Mon, 12 May 2008 02:09:00 +0000</pubDate>
		<dc:creator>yayakmpf</dc:creator>
				<category><![CDATA[CakePHP]]></category>

		<guid isPermaLink="false">http://yayakmpf.wordpress.com/2008/05/12/konsep-dasar-cakephp-bag-i/</guid>
		<description><![CDATA[Sebelum memulai instalasi dan praktek lainnya, ada baiknya kita mengenal konsep yang diterapkan dalam CakePHP. CakePHP menggunakan apa yang disebut dengan pola Model-View-Controller (MVC).  MVC adalah pola desain software yang membantu secara logis memisahkan kode program anda, membuatnya lebih reusable, maintainable, dan lebih baik secara keseluruhan.
Dalam istilah Cake, Model mewakili bagian table/record database, dan [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yayakmpf.wordpress.com&blog=3711654&post=43&subd=yayakmpf&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Sebelum memulai instalasi dan praktek lainnya, ada baiknya kita mengenal konsep yang diterapkan dalam CakePHP. CakePHP menggunakan apa yang disebut dengan pola Model-View-Controller (MVC).<span>  </span>MVC adalah pola desain software yang membantu secara logis memisahkan kode program anda, membuatnya lebih reusable, maintainable, dan lebih baik secara keseluruhan.
<p>Dalam istilah Cake, <b>Model</b> mewakili bagian table/record database, dan hubungannya dengan table/record yang lain. Model juga dapat berisi aturan validasi data, yang biasa diterapkan ketika data model di-insert atau update.</p>
<p>  <span class="fullpost">
<p><b>View </b>mewakili file tampilan Cake, yang merupakan HTML biasa dengan tambahan kode PHP.</p>
<p>Sedangkan <b>Controller</b> dalam Cake menangani permintaan dari server. Controller menangani user input (URL dan data POST), menerapkan business ligic, memakai Model untuk membaca dan menulis data dari dan ke database dan sumber lainnya, serta mengirimkan data keluaran ke file View yang sesuai.</p>
<p>Untuk memudahkan pengorganisasian aplikasi, Cake menggunakan MVC tidak hanya untuk mengatur bagaimawa objek berinteraksi dalam aplikasi, tapi juga bagaimana file-file disimpan, yang akan dijelaskan nanti.</p>
<p>Ok, sekarang kita beralih melihat susunan file/folder dalam CakePHP. Jika anda meng-unpack file yang sudah didownload dari chapter 1 sebelumnya, anda akan melihat bahwa ada beberapa folder dalam Cake. Namun ada tiga folder utama: <i>app, cake</i>, dan <i>vendors</i>. Secara lengkap berikut susunan folder dalam CakePHP:</p>
<p><span style="font-size:85%;"><span class="fullpost">
<pre>/app</pre>
<pre><span>    </span>/config<span>          </span>- Berisi file-file konfigurasi database, ACL, dll </pre>
<pre> </pre>
<pre><span>    </span>/controllers<span>     </span>- Controllers aplikasi anda </pre>
<pre><span>        </span>/components<span>  </span>- Components aplikasi anda</pre>
<pre> </pre>
<pre><span>    </span>/index.php<span>       </span>- mempersilahkan anda untuk mengembangkan cake dengan /appsebagai DocumentRoot</pre>
<pre> </pre>
<pre><span>    </span>/models<span>          </span>- Models aplikasi</pre>
<pre> </pre>
<pre><span>    </span>/plugins<span>         </span>- Plugins aplikasi</pre>
<pre> </pre>
<pre><span>    </span>/tmp<span>             </span>- digunakan untuk caches dan logs(set folder ini menjadi writable)</pre>
<pre> </pre>
<pre><span>    </span>/vendors<span>         </span>- Berisi third-party libaries untuk aplikasi</pre>
<pre> </pre>
<pre><span>    </span>/views<span>           </span>- Views aplikasi</pre>
<pre><span>        </span>/elements<span>    </span>- Elements, bagian dari tampilan</pre>
<pre><span>        </span>/errors<span>      </span>- Custom error pages</pre>
<pre><span>        </span>/helpers<span>     </span>- Helpers</pre>
<pre><span>        </span>/layouts<span>     </span>- Application layout files</pre>
<pre><span>        </span>/pages<span>       </span>- Static views </pre>
<pre> </pre>
<pre><span>    </span>/webroot<span>         </span>- DocumentRoot untuk aplikasi</pre>
<pre><span>        </span>/css</pre>
<pre><span>        </span>/files</pre>
<pre><span>        </span>/img</pre>
<pre><span>        </span>/js</pre>
<pre> </pre>
<pre>/cake<span>                </span>- Library inti Cake. Jangan edit file apapun dalam folder ini.</pre>
<pre> </pre>
<pre>index.php<span>           </span></pre>
<pre> </pre>
<pre>/vendors<span>             </span>- Untuk server-wide third-party libraries.</pre>
<pre> </pre>
<pre>VERSION.txt<span>          </span>- Versi Cake yang anda gunakan</pre>
<p></span></span></p>
<p></span></p><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/yayakmpf.wordpress.com/43/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/yayakmpf.wordpress.com/43/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yayakmpf.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yayakmpf.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/yayakmpf.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/yayakmpf.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/yayakmpf.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/yayakmpf.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/yayakmpf.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/yayakmpf.wordpress.com/43/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/yayakmpf.wordpress.com/43/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/yayakmpf.wordpress.com/43/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yayakmpf.wordpress.com&blog=3711654&post=43&subd=yayakmpf&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://yayakmpf.wordpress.com/2008/05/12/konsep-dasar-cakephp-bag-i/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/443d3dd1ecde2ee75f5d9743008637c0?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">yayakmpf</media:title>
		</media:content>
	</item>
		<item>
		<title>Bake dan Scaffolding Pada CakePhp</title>
		<link>http://yayakmpf.wordpress.com/2008/05/12/bake-dan-scaffolding-pada-cakephp/</link>
		<comments>http://yayakmpf.wordpress.com/2008/05/12/bake-dan-scaffolding-pada-cakephp/#comments</comments>
		<pubDate>Mon, 12 May 2008 01:37:00 +0000</pubDate>
		<dc:creator>yayakmpf</dc:creator>
				<category><![CDATA[CakePHP]]></category>

		<guid isPermaLink="false">http://yayakmpf.wordpress.com/2008/05/12/bake-dan-scaffolding-pada-cakephp/</guid>
		<description><![CDATA[Dalam website resmi CakePhp(http://www.cakephp.org) Cakephp disebut sebagai Rapid Application Framework Salah satu alasannya adalah karena Cake memiliki fitur Scaffold dan Bake.
Bakeadalah fitur CakePhp yang mampu menggenerate model, view, dan controller (MVC)  secara otomatis sesuai dengan database yang ada pada konfigurasi. Bake cocok digunakan sebagai template, karena Bake akan otomatis menghasilkan kode kode umum yang [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yayakmpf.wordpress.com&blog=3711654&post=42&subd=yayakmpf&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><div style="text-align:justify;">Dalam website resmi CakePhp(http://www.cakephp.org) Cakephp disebut sebagai Rapid Application Framework Salah satu alasannya adalah karena Cake memiliki fitur Scaffold dan Bake.</p>
<p><span style="font-weight:bold;">Bake</span><br />adalah fitur CakePhp yang mampu menggenerate model, view, dan controller (MVC)  secara otomatis sesuai dengan database yang ada pada konfigurasi. Bake cocok digunakan sebagai template, karena Bake akan otomatis menghasilkan kode kode umum yang sering digunakan (kode kode CRUD) yang bisa diubah ataupun ditambahkan sesuai kebutuhan.</p>
<p>Untuk menggunakan fitur ini cukup mudah masuklah pada direktori cake/scripts pada instalasi CakePhp lalu ketikkan ketikkan “php bake.php”. Misal akan dibuat aplikasi yang menggunakan tabel Log.</p>
<p>Contoh penggunaan Bake pada pembuatan model</p>
<pre><span style="font-size:85%;">[M]odel[C]ontroller[V]iewPlease select a class to Bake: (M/V/C)&gt;m—————————————————————

Model Bake:—————————————————————Possible models based on your current database:

1. Log

Enter a number from the list above, or type in the name of another model.

&gt; 1

Would you like to supply validation criteria for the fields in your model? (y/n)[y]

&gt; n

Would you like to define model associations (hasMany, hasOne, belongsTo, etc.)? (y/n)[y]

&gt; n

—————————————————————The following model will be created: —————————————————————

Model Name: Log

DBConnection: default

Model Table: logs

Validation: Array

(

)—————————————————————Look okay? (y/n)

[y] &gt; y

Creating file /var/www/html/cake//app/models/log.php

File /app/models/log.php exists, overwrite? (y/n/q):y

Do you want to bake unit test files anyway? (y/n)[y] &gt; n </span></pre>
</div>
<p style="text-align:justify;">Hasil eksekusi bake di atas akan</p>
<div style="text-align:justify;"> </div>
<p style="text-align:justify;">menghasilkan file app/model/log.php</p>
<div style="text-align:justify;">&lt;?<br />class Log extends AppModel{<br />}<br />?&gt;</p>
<p>Contoh penggunaan bake pada pembuatan controller
<pre><span style="font-size:85%;">Please select a class to Bake: (M/V/C)&gt; c---------------------------------------------------------------

Controller Bake:---------------------------------------------------------------  </span></pre>
<pre><span style="font-size:85%;">Controller name? Remember that Cake controller names are plural.

&gt; logs

Would you like bake to build your controller interactively?

Warning: Choosing no will overwrite Logs controller if it exist. (y/n)[y]

&gt; y

Would you like this controller to use other models besides ‘Log’? (y/n)[n]

&gt; n

Would you like this controller to use other helpers besides HtmlHelper? (y/n)[n]

&gt; n

Would you like this controller to use any components? (y/n)[n]

&gt; n

Would you like to include some basic class methods (index(), add(), view(), edit())? (y/n)[n]

&gt; y

————————————————————— </span></pre>
<p><span style="font-size:85%;"><br /></span>
<pre><span style="font-size:85%;">The following controller will be created:

—————————————————————

Controller Name: logs

—————————————————————

Look okay? (y/n)[y]

&gt; y

Creating file /var/www/html/cake//app/controllers/logs_controller.php

File /app/controllers/logs_controller.php exists, overwrite? (y/n/q):y

Wrote /app/controllers/logs_controller.php  </span></pre>
<p><span style="font-size:85%;"><br /></span>
<pre><span style="font-size:85%;">Cake test suite not installed.

Do you want to bake unit test files anyway? (y/n)[y]

&gt; n</span></pre>
</p></div>
<p style="text-align:justify;">Hasil pengeksekusian di atas akan menghasilkan file</p>
<div style="text-align:justify;"> </div>
<p style="text-align:justify;">app/controllers/Logs_Controller.php</p>
<p style="text-align:justify;"></p>
<p style="text-align:justify;">Penggunaan bake pada pembuatan view</p>
<div style="text-align:justify;">
<pre><span style="font-size:85%;">Please select a class to Bake: (M/V/C)---------------------------------------------------------------

View Bake:

---------------------------------------------------------------Controller Name? (plural)

&gt; logsWould you like bake to build your views interactively

?Warning: Choosing no will overwrite views if it exist.

(y/n)[y]

&gt; y

Would you like to create some scaffolded views (index, add, view, edit) for this controller?

NOTE: Before doing so, you’ll need to create your controller and model classes

(including associated models). (y/n)[n]

&gt; y

Creating file /var/www/html/cake//app/views/logs/index.thtml

Wrote /app/views/logs/index.thtml

Creating file /var/www/html/cake//app/views/logs/view.thtml

Wrote /app/views/logs/view.thtml

Creating file /var/www/html/cake//app/views/logs/add.thtml

Wrote /app/views/logs/add.thtml

Creatingfile /var/www/html/cake//app/views/logs/edit.thtml

Wrote /app/views/logs/edit.thtml—————————————————————Note:- If you’re using a non-domain install, change URL pathsfrom /controller/action to /cake_install/controller/action—————————————————————View Scaffolding Complete. </span></pre>
</div>
<p style="text-align:justify;">Pengeksekusian di atas akan menghasilkan file file :</p>
<p style="text-align:justify;"></p>
<p style="text-align:justify;">app/views/logs/add.thtml<br />app/views/logs/index.thtml<br />app/views/logs/edit.thtml<br />app/views/logs/view.thtml</p>
<div style="text-align:justify;">Scaffolding memiliki fungsi yang hampir sama denganBake, hanya saja dengan scaffolding tidak ada kode yang mesti kita buat hanya membuat kelas model dan controller. Lalu mendeklarasikan variabel scaffold pada controller.<br />Contoh model yang menggunakan fitur scaffolding
<pre>&lt;?class Log extends AppModel{}?&gt;

Contoh controller yang menggunakan fitur scaffolding

&lt;?phpclass LogsController extends AppController{var $scaffold;}?&gt;

</pre>
</div>
<p>Kedua kelas di atas akan otomatis menghasilkan aplikasi web sederhana dengan kemampuan CRUD (Create Update Delete).</p>
<p><span style="font-weight:bold;">Kesimpulan:</span></p>
<p>CakePhp adalah sebuah Rapid ApplicationFramework yang bisa mempercepat<br />pembuatan sebuah aplikasi web. Salah satu fitur yang dimiliki CakePhp<br />adalah Bake dan Scaffolding. Dengan Bake dapat dibuat template untuk<br />masing masing model, view, dan controller sehingga developer tidak<br />perlu membuat kode dari awal. Sedang Scaffolding sangat berguna dalam<span style="font-family:monospace;"> </span>membuat aplikasi web sederhana dengan fitur CRUD.</p><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/yayakmpf.wordpress.com/42/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/yayakmpf.wordpress.com/42/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yayakmpf.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yayakmpf.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/yayakmpf.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/yayakmpf.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/yayakmpf.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/yayakmpf.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/yayakmpf.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/yayakmpf.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/yayakmpf.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/yayakmpf.wordpress.com/42/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yayakmpf.wordpress.com&blog=3711654&post=42&subd=yayakmpf&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://yayakmpf.wordpress.com/2008/05/12/bake-dan-scaffolding-pada-cakephp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/443d3dd1ecde2ee75f5d9743008637c0?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">yayakmpf</media:title>
		</media:content>
	</item>
		<item>
		<title>Introduction CakePhp</title>
		<link>http://yayakmpf.wordpress.com/2008/05/12/introduction-cakephp/</link>
		<comments>http://yayakmpf.wordpress.com/2008/05/12/introduction-cakephp/#comments</comments>
		<pubDate>Mon, 12 May 2008 01:33:00 +0000</pubDate>
		<dc:creator>yayakmpf</dc:creator>
				<category><![CDATA[CakePHP]]></category>

		<guid isPermaLink="false">http://yayakmpf.wordpress.com/2008/05/12/introduction-cakephp/</guid>
		<description><![CDATA[CakePhp (http://www.cakephp.org) dibuat oleh ichal Tatarynowicz pada tahun 2005. Proyek ini terinspirasi oleh esuksesan RoR(Ruby On Rails) yang membuat bahasa Ruby terkenal.CakePhp adalah sebuah framework (kerangkakerja) yang bisa membuat proses pengembangan aplikasi web menjadi lebihcepat dan efiisen. CakePhp menyediakan pustaka (library), class, daninfrastruktur bagi programmer dalam membuat aplikasi web.
Dalam proses pengembangan plikasi web CakePhp menggunakan [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yayakmpf.wordpress.com&blog=3711654&post=41&subd=yayakmpf&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p align="left">CakePhp (<a href="http://www.cakephp.org" rel="nofollow">http://www.cakephp.org</a>) dibuat oleh ichal Tatarynowicz pada tahun 2005. Proyek ini terinspirasi oleh esuksesan RoR(Ruby On Rails) yang membuat bahasa Ruby terkenal.<br />CakePhp adalah sebuah <span style="font-style:italic;">framework </span>(kerangka<br />kerja) yang bisa membuat proses pengembangan aplikasi web menjadi lebih<br />cepat dan efiisen. CakePhp menyediakan pustaka (library), class, dan<br />infrastruktur bagi programmer dalam membuat aplikasi web.</p>
<p>Dalam proses pengembangan plikasi web CakePhp menggunakan pola MVC ( Model View Controller). imana pada pola ini kode pengaksesan database dan kode untuk<br />menampilkan data dipisahkan. Pola ini memiliki banyak keuntungan salah<br />satunya adalah proses pengembangan logika bisnis( bussiness logic),<br />pembuatan basis data, dan desain antar muka dapat dilakukan oleh orang<br />yang berbeda dan secara mandiri, sehingga proses pembuatan aplikasi<br />bisa menjadi lebih cepat</p>
<p>Untuk menginstall CakePhp maka terlebih dahulu harus disediakan:</p>
<ol>
<li>HTTP Server( Seperti Apache, dengan session dan mod_rewrite dienabled)</li>
<li>PHP 4.3.2 atau yang lebih baru, CakePhp dapat bekerja dengan php versi 4 dan 5 dengan baik.</li>
<li>Database Server( Saat ini CakePhp baru mendukung MySql, Postgresql, dan wrapper untuk AdoDB)</li>
</ol>
<p>Versi terbaru CakePhp dapat didownload di<br /><a href="http://cakeforge.org/projects/cakephp/" rel="nofollow">http://cakeforge.org/projects/cakephp/</a>. Proses Penginstallan CakePhp<br />sangat mudah cukup dengan diekstrak pada direktori root HTTP server.</p>
<pre>/wwwroot         /cake          /app          /cake          /vendors         .htaccess          index.php</pre>
<p>Setelah itu ada beberapa hal yang mesti dicek.</p>
<ul>
<li>Pastikan file .htaccess bisa ditulisi. Untuk itu padasettingan dokumen root web server anda pastikan bagian “AllowOverride”adalah All.</li>
<li>Pastikan modul mod_rewrite telah terinstall dan dimuat oleh web server anda.</li>
</ul>
<p>Untuk memastikan cakephp telah terinstall dengan benar maka bukalah alamat <a href="http://localhost/cake" rel="nofollow">http://localhost/cake</a></p>
<p>pada browser, jika cakephp diekstrak pada folder cake pada dokumen root tadi.</p>
<p>Selanjutnya jika Cakephp telah terinstall, maka proses selanjutnya</p>
<p>adalah konfigurasi database. Pada CakePhp konfigurasi database disimpan</p>
<p>di app/config/database.php. CakePhp yang baru terinstall tidak memiliki</p>
<p>file ini, untuk itu kopi file app/config/database.php.default menjadi</p>
<p>app/config/database.php lalu ubah sesuai dengan database yang akan</p>
<p>digunakan.</p>
<pre>var $default = array('driver' =&gt; 'mysql',                     'connect' =&gt;'mysql_connect',                     'host'    =&gt; 'localhost',

                   'login'   =&gt; 'user',

                   'password' =&gt; 'password',

                   'database' =&gt; 'project_name',

                   'prefix'   =&gt; '');
</pre>
<p>Nah sekarang lanjut ke tahap pemrogramannya. Dalam membuat aplikasi dengan CakePhp ada tiga hal yang mesti dibuat yaitu</p>
<ol>
<li>Model,model ini adalah akses poin ke database jadi semua kode kode yangbersifat pengaksesan terhadap database ada di model. Kode model disimpan dalam folder app/models</li>
<li>Controller, berisi logika bisnis pada aplikasi, memrosesdata data yang diambil dari database, dan mengatur data data apa yangmesti ditampilkan. Kode controller disimpan dalam folder app/controllers</li>
<li>View, berisi kode kode yang akan mengatur bagaimana data datadari controller tadi akan ditampilkan. Kode view disimpan dalam folderapp/views.</li>
</ol>
<p><span style="font-weight:bold;">Tambahan (instalasi) :</p>
<p></span>
<ol>
<li> Edit http.conf dengan mengaktifkan mod_rewrite.so</li>
<li> Kemudian (masih di http.conf) pastikan direktori webroot (misal htdocs) telah memiliki setting seperti berikut :<br />
<blockquote>Options Indexes Multiviews,<br />AllowOverride All,<br />Order allow,<br />deny Allow from all</p></blockquote>
<p>Untuk lebih jelasnya jangan lupa juga sedikit membaca komentar yang ada. Kemudian coba refresh browser anda, jika tampilan CakePHP menjadi lebih berwarna, maka anda telah berhasil.</li>
<li>Sekarang tinggal menyelesaikan settingan, sesuai perintah yang tampil di browser anda. Untuk setting database cobalah edit file app/config/database.php.default dengan mengikuti petunjuk yang ada. Setelah itu save dengan nama database.php.</li>
<li>Anda juga bisa mengubah nilai security.salt yang ada pada app/config/core.php, bebas dengan nilai apapun. Tapi tahapan setting ini tidak saya temukan pada versi CakePHP sebelumnya.</li>
<li>Finish. CakePHP anda sudah bisa digunakan, walaupun mungkin masih ada settingan optional yang harus anda lakukan.</li>
</ol>
<p>
<pre></pre><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/yayakmpf.wordpress.com/41/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/yayakmpf.wordpress.com/41/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yayakmpf.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yayakmpf.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/yayakmpf.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/yayakmpf.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/yayakmpf.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/yayakmpf.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/yayakmpf.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/yayakmpf.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/yayakmpf.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/yayakmpf.wordpress.com/41/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yayakmpf.wordpress.com&blog=3711654&post=41&subd=yayakmpf&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://yayakmpf.wordpress.com/2008/05/12/introduction-cakephp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/443d3dd1ecde2ee75f5d9743008637c0?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">yayakmpf</media:title>
		</media:content>
	</item>
		<item>
		<title>CakePHP dan KCAPTCHA</title>
		<link>http://yayakmpf.wordpress.com/2008/05/12/cakephp-dan-kcaptcha/</link>
		<comments>http://yayakmpf.wordpress.com/2008/05/12/cakephp-dan-kcaptcha/#comments</comments>
		<pubDate>Mon, 12 May 2008 00:59:00 +0000</pubDate>
		<dc:creator>yayakmpf</dc:creator>
				<category><![CDATA[CakePHP]]></category>

		<guid isPermaLink="false">http://yayakmpf.wordpress.com/2008/05/12/cakephp-dan-kcaptcha/</guid>
		<description><![CDATA[CakePHP merupakan sebuah framework multifungsi yang, tentu saja, mendukung penggunaan uji CAPTCHA. Ada sebuah aplikasi opensource untuk menampilkan image CAPTCHA yang dikenal dengan KCAPTCHA. Untuk mendapatkannya, silahkan Anda terlebih dahulu mendownloadnya disini.

Sudah ? Oke, kita akan memulai proyek penghadangan spambot ini.
 
PERTAMA :Ekstrak aplikasi KCAPTCHA Anda dan letakkan di folder vendors dengan path “instalasiCake/vendors/kcaptcha”. Buka [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yayakmpf.wordpress.com&blog=3711654&post=40&subd=yayakmpf&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><div style="text-align:left;">CakePHP merupakan sebuah framework multifungsi yang, tentu saja, mendukung penggunaan uji CAPTCHA. Ada sebuah aplikasi opensource untuk menampilkan image CAPTCHA yang dikenal dengan KCAPTCHA. Untuk mendapatkannya, silahkan Anda terlebih dahulu mendownloadnya <a href="http://www.ziddu.com/download.php?uid=a62hnZqnaKuamJutsayZlJyiY6%2BWlZar3">disini.</a></p>
</div>
<p style="text-align:left;">Sudah ? Oke, kita akan memulai proyek penghadangan spambot ini.</p>
<div> </div>
<p style="text-align:justify;"><strong>PERTAMA :</strong><br />Ekstrak aplikasi KCAPTCHA Anda dan letakkan di folder vendors dengan path “instalasiCake/vendors/kcaptcha”. Buka file kcaptcha_config.php yang ada di dalam folder kcaptcha tersebut. Di sana ada beberapa konfigurasi yang bisa Anda kustomasi, semisal menghilangkan tampilan “credits” dengan mengeset line :</p>
<div style="text-align:justify;">
<blockquote>
<p>$show_credits = true ;</p>
</blockquote></div>
<p style="text-align:justify;">menjadi</p>
<div style="text-align:justify;">
<blockquote>
<p>$show_credits = false;</p>
</blockquote></div>
<p style="text-align:justify;">tentu jika Anda ingin menghargai pencipta aplikasi ini, silahkan tetap menampilkannya. Anda bisa membaca keterangan yang ada dalam file tersebut sebelum melakukan pengaturan.</p>
<p style="text-align:justify;"><strong>KEDUA : </strong><br />Buat sebuah file komponen dengan nama captcha.php dengan script sebagai berikut :</p>
<p style="text-align:justify;">&lt;?php</p>
<p style="text-align:justify;"> class CaptchaComponent extends Object<br />{<br />function startup(&amp;$controller)<br />{<br />$this-&gt;controller = $controller;<br />}<br />function render()<br />{<br />vendor(’kcaptcha/kcaptcha’);<br />$kcaptcha = new KCAPTCHA();<br />$this-&gt;controller-&gt;Session-&gt;write(’captcha’, $kaptcha-&gt;getKeyString());<br />}<br />}<br />?&gt;</p>
<p style="text-align:justify;">Simpan file tersebut pada path “instalasiCake/app/controllers/components/captcha.php”</p>
<p style="text-align:justify;"><strong>KETIGA :</strong><br />Saatnya membuat script validasi pada Controller Anda. Anggap Controller Login adalah Controller yang akan menghandle halaman login Anda.</p>
<p style="text-align:justify;">&lt;?php</p>
<p style="text-align:justify;"> class UsersController extends AppController<br />{<br />…<br />/*tambahkan pendeklarasian komponen Captcha*/<br />var $components = array(’Captcha’);<br />…<br />/* menambahkan script validasi */<br />if(isset($_SESSION[’captcha’]) &amp;&amp; $_SESSION[’captcha’] == $_POST[’keystring’]) { </p>
<p style="text-align:justify;">//masukkan script Anda yang lainnya di sini</p>
<div style="text-align:justify;"> </div>
<p style="text-align:justify;">}<br />else {<br />//tampilkan pesan kesalahan<br />}</p>
<div style="text-align:justify;"> /*fungsi captcha untuk rendering image<br />function captcha()<br />{<br />$this-&gt;Captcha-&gt;render();<br />}<br />…<br />}<br />?&gt;</p>
</div>
<p style="text-align:justify;">Jangan lupa untuk menyimpan Controller Login yang telah Anda modifikasi sedemikian rupa seperti di atas.</p>
<div style="text-align:justify;"> </div>
<p style="text-align:justify;"><strong>KEEMPAT : </strong></p>
<div style="text-align:justify;"> </div>
<p style="text-align:justify;">Kini kita akan membuat tampilan image CAPTCHA. Pada bagian View dari aplikasi CakePHP Anda, tambahkan script di bawah ini untuk menampilkan image CAPTCHA :</p>
<p style="text-align:justify;">&lt;img src=&#8221;&lt;?php echo $html-&gt;url(&#8216;/logins/captcha&#8217;); ?&gt;&#8221; /&gt;</p>
<p style="text-align:justify;">Untuk memasukkan input teks dari image CAPTCHA yang terbaca oleh pengunjung situs Anda, tambahkan script :</p>
<p style="text-align:justify;">&lt;input type=”text” name=”keystring”&gt;</p>
<p style="text-align:justify;"><strong>KELIMA :</strong></p>
<div style="text-align:justify;"> </div>
<p style="text-align:justify;">Cek ! Pastikan aplikasi Anda berjalan dengan baik. Apabila aplikasi Anda tidak menampilkan image, pastikan PHP Anda mendukung dan terinstall GDLibrary. Silahkan cek dengan membuat file info.php yang berisi script :</p>
<p style="text-align:justify;">&lt;?<br />phpinfo();<br />?&gt;</p>
<p style="text-align:justify;">Selamat berjuang melawan spam-spam nakal.</p>
<div style="text-align:justify;">
</div>
<p style="text-align:justify;"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/yayakmpf.wordpress.com/40/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/yayakmpf.wordpress.com/40/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yayakmpf.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yayakmpf.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/yayakmpf.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/yayakmpf.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/yayakmpf.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/yayakmpf.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/yayakmpf.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/yayakmpf.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/yayakmpf.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/yayakmpf.wordpress.com/40/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yayakmpf.wordpress.com&blog=3711654&post=40&subd=yayakmpf&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://yayakmpf.wordpress.com/2008/05/12/cakephp-dan-kcaptcha/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/443d3dd1ecde2ee75f5d9743008637c0?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">yayakmpf</media:title>
		</media:content>
	</item>
		<item>
		<title>Blog Making Tutorial From IBM Sites</title>
		<link>http://yayakmpf.wordpress.com/2008/05/12/blog-making-tutorial-from-ibm-sites/</link>
		<comments>http://yayakmpf.wordpress.com/2008/05/12/blog-making-tutorial-from-ibm-sites/#comments</comments>
		<pubDate>Mon, 12 May 2008 00:31:00 +0000</pubDate>
		<dc:creator>yayakmpf</dc:creator>
				<category><![CDATA[CakePHP]]></category>

		<guid isPermaLink="false">http://yayakmpf.wordpress.com/2008/05/12/blog-making-tutorial-from-ibm-sites/</guid>
		<description><![CDATA[Barusan kemarin ngumpulin paket tutorial yang dibuat oleh website resmi IBM, tentang bagaimana membuat blog dan atribut-atributnya dengan menggunakan CakePHP. Alhamdulillah, udah terkumpul seri 1 sampai dengan 5, dalam bentuk file PDF.

So, buat temen-temen, silahkan deh, sedot pdf dan sourcenya dari website info-ugm, di url ini :
Tutorial Blog dari IBM(semoga pas lagi nggak down)
  [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yayakmpf.wordpress.com&blog=3711654&post=39&subd=yayakmpf&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="text-align:justify;">Barusan kemarin ngumpulin paket tutorial yang dibuat oleh <a href="http://www-128.ibm.com/developerworks/views/opensource/libraryview.jsp?search_by=cook+web+sites+CakePHP" title="Webnya IBM nih ! " target="_blank">website resmi IBM</a>, tentang bagaimana membuat blog dan atribut-atributnya dengan menggunakan CakePHP. Alhamdulillah, udah terkumpul seri 1 sampai dengan 5, dalam bentuk file PDF.</p>
<div style="text-align:justify;">
<p>So, buat temen-temen, silahkan deh, sedot pdf dan sourcenya dari website info-ugm, di url ini :</p>
<p><a href="http://info.ugm.ac.id/software/windows/CakePHP/IBM/" title="IBM" target="_blank">Tutorial Blog dari IBM</a><br />(semoga pas lagi nggak down)</p>
</div><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/yayakmpf.wordpress.com/39/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/yayakmpf.wordpress.com/39/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yayakmpf.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yayakmpf.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/yayakmpf.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/yayakmpf.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/yayakmpf.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/yayakmpf.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/yayakmpf.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/yayakmpf.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/yayakmpf.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/yayakmpf.wordpress.com/39/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yayakmpf.wordpress.com&blog=3711654&post=39&subd=yayakmpf&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://yayakmpf.wordpress.com/2008/05/12/blog-making-tutorial-from-ibm-sites/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/443d3dd1ecde2ee75f5d9743008637c0?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">yayakmpf</media:title>
		</media:content>
	</item>
		<item>
		<title>Tutorial Scaffolding &#8211; Membuat List Pemain American Football</title>
		<link>http://yayakmpf.wordpress.com/2008/05/12/tutorial-scaffolding-membuat-list-pemain-american-football/</link>
		<comments>http://yayakmpf.wordpress.com/2008/05/12/tutorial-scaffolding-membuat-list-pemain-american-football/#comments</comments>
		<pubDate>Mon, 12 May 2008 00:10:00 +0000</pubDate>
		<dc:creator>yayakmpf</dc:creator>
				<category><![CDATA[CakePHP]]></category>

		<guid isPermaLink="false">http://yayakmpf.wordpress.com/2008/05/12/tutorial-scaffolding-membuat-list-pemain-american-football/</guid>
		<description><![CDATA[Original Tutorial By Jason Gilmore (developer.com) 
Tutorial kali ini akan memberikan sebuah contoh sederhana menggunakan fitur scaffolding yang ada pada framework CakePHP. Scaffolding adalah sebuah variabel tambahan yang memudahkan developer untuk melihat prototipe aplikasi CRUD (Create, Read, Update, Delete) yang akan ia buat, sebelum ia menuliskan seluruh script yang dibutuhkan pada controller aplikasi.Sebagai contoh, kita [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yayakmpf.wordpress.com&blog=3711654&post=38&subd=yayakmpf&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><div style="text-align:justify;"><em>Original Tutorial By Jason Gilmore (developer.com)</em> </div>
<p style="text-align:justify;">Tutorial kali ini akan memberikan sebuah contoh sederhana menggunakan fitur scaffolding yang ada pada framework CakePHP. Scaffolding adalah sebuah variabel tambahan yang memudahkan developer untuk melihat prototipe aplikasi CRUD (Create, Read, Update, Delete) yang akan ia buat, sebelum ia menuliskan seluruh script yang dibutuhkan pada controller aplikasi.<br />Sebagai contoh, kita akan membuat sebuah aplikasi untuk melakukan manajemen pemain sebuah tim American Football. Aplikasi yang akan kita buat memerlukan setidaknya link untuk melakukan creating (pembuatan item pemain), editing (edit item), viewing (melihat item pemain) dan deleting (menghapus item pemain). Selain itu, perlu pula data untuk mengetahui dengan tim mana pemain tersebut bergabung.<br />Kita akan menggunakan framework CakePHP untuk membuat prototipe aplikasi CRUD. Kita asumsikan, Anda sudah terbiasa dan familiar dengan konsep arsitektur MVC yang menjadi dasar kerja CakePHP. Selain itu, kita asumsikan Anda sukses melakukan instalasi framework CakePHP pada webserver Anda.</p>
<p style="text-align:justify;"><strong>Membuat Tabel Database</strong> </p>
<p style="text-align:justify;">Untuk tutorial kali ini, kita akan membuat dua buah tabel database yang mewakili kebutuhan dasar dari aplikasi kita. Tabel yang akan kita buat adalah players dan teams. Cukup pastekan script SQL ini di phpMyadmin Anda, setelah Anda mendefinisikan database aplikasi Anda:</p>
<div style="text-align:justify;">
<blockquote>
<p>CREATE TABLE players (<br />id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,<br />firstname VARCHAR(50) NOT NULL,<br />position VARCHAR(25) NOT NULL,<br />team_id SMALLINT(6)<br />)</p>
<p>CREATE TABLE teams (<br />id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,<br />name VARCHAR(50) NOT NULL,<br />)</p>
</blockquote></div>
<p style="text-align:justify;">Cermati item field team_id yang terdapat pada tabel players . Ini adalah foreign key yang dipetakan ke primary key tabel teams. Field tersebut diberi nama demikian karena CakePHP mampu secara otomatis mengidentifikasinya sebagai foreign key dan memanfaatkannya untuk menampilkan berbagai macam hal yang menarik seperti men-generate listboxes saat menambahkan dan mengedit pemain baru.</p>
<p style="text-align:justify;"><strong>Menggunakan Scaffolding</strong><br />CakePHP mempunyai sebuah fitur istimewa yang dikenal dengan nama scaffolding. Sesuai dengan namanya, scaffolding berfungsi untuk mem-parsing skema tabel dan membuat form-form yang sesuai dengan tipe datanya. Dengan demikian, pengguna CakePHP akan melihat contoh tampilan aplikasi sebelum ia benar-benar menuliskan secara lengkap source code pada controller-nya.<br />Ada beberapa peraturan yang harus ditaati supaya fitur scaffolding ini berjalan dengan baik :</p>
<div style="text-align:justify;"> </div>
<p style="text-align:justify;">•    Apabila Anda ingin memetakan sebuah foreign key ke sebuah tabel, pada aplikasi kita adalah tabel team ke tabel player, maka foreign key tersebut harus diberi nama dengan TABLE_id, dimana TABLE adaIah kata tunggal dari foreign table yang kita petakan. Dalam hal ini, kita memberi nama foreign key kita dengan nama team_id (team adalah kata tunggal dari teams).<br />•    Tabel yang akan kita prototipe-kan harus dipetakan pada controller yang mendefinisikan variabel $scaffold.<br />•    Apabila Anda ingin memanfaatkan keunggulan CakePHP untuk memetakan hubungan (asosiasi) antar tabel, tabel yang akan Anda prototipe-kan harus dihubungkan pada model yang mendefinisikan asosiasi tabel-tabel yang relevan. CakePHP mendukung empat jennis asosiasi antar tabel: hasOne, hasMany, belongsTo, dan hasAndBelongsToMany. Pada aplikasi kita, masing-masing pemain berasosiasi dengan satu tim, sehingga kita akan menggunakan jenis asosiasi belongsTo.</p>
<p style="text-align:justify;"><strong>Mendefinisikan Model dan Controller</strong></p>
<div style="text-align:justify;"> </div>
<p style="text-align:justify;">Buat file controller berikut ini dan isikan dengan script berikut :</p>
<p style="text-align:justify;">&lt;?php<br />class PlayersController extends AppController<br />{<br />var $scaffold;<br />}<br />?&gt;</p>
<div style="text-align:justify;">Simpan dengan nama players_controller.php dan letakkan pada direktori /app/controllers/ . Berikutnya kita akan mendefinisikan controller team. Buatlah file bernama teams_controller.php berisi script di bawah ini dan simpan pada direktori  /app/controllers/ .</p>
<p>&lt;?php<br />class TeamsController extends AppController<br />{<br />var $scaffold;<br />}<br />?&gt;</p>
<p>Berikutnya, kita akan mendefinisikan model Player. Buat sebuah file bernama player.php berisi script di bawah ini dan simpan pada direktori /app/models/ .</p>
<p>&lt;?php<br />class Player extends AppModel<br />{<br />var $name = ‘Player’;<br />var $belongsTo = array(’Team’ =&gt;<br />array(’className’    =&gt; ‘Team’,<br />‘conditions’   =&gt; ”,<br />‘order’        =&gt; ”,<br />‘foreignKey’   =&gt; ‘team_id’<br />)<br />);<br />}<br />?&gt;</p>
<p>Array $belongsTo telah didefinisikan, memetakan kolom team_id ke model Team. Akhirnya, kita pun harus mendefinisikan model Team sehingga CakePHP mengetahui kolom mana yang harus ditampilkan sebagai hasil pemetaan pada tabel teams. Buatlah file bernama team.php  berisi script di bawah ini dan simpan ke direktori /app/models/ :</p>
<p>&lt;?php<br />class Team extends AppModel<br />{<br />var $name = ‘Team’;<br />var $displayField = ‘name’;<br />}<br />?&gt;</p>
<p>Percaya atau tidak, kini Anda telah memiliki sebuah aplikasi insert, edit, dan delete untuk tabel players dan teams ! Buka pada browser Anda link  <a href="http://localhost/cake/teams/add" rel="nofollow">http://localhost/cake/teams/add</a> dan tambahkan sebuah tim American Football baru. Tampilan list dari tim Anda setelah Anda masukkan beberapa data seharusnya terlihat sebagai berikut (<a href="http://localhost/cake/teams" rel="nofollow">http://localhost/cake/teams</a>) :</p>
<p><a href="http://bp3.blogger.com/_qMX3iSEw_Co/SCeNQx8P8LI/AAAAAAAAADs/WjwuedT-IP4/s1600-h/list-tim.jpg"><img style="display:block;text-align:center;cursor:pointer;width:362px;height:111px;margin:0 auto 10px;" src="http://bp3.blogger.com/_qMX3iSEw_Co/SCeNQx8P8LI/AAAAAAAAADs/WjwuedT-IP4/s320/list-tim.jpg" alt="" border="0" /></a><br />Berikutnya, arahkan browser Anda pada link  <a href="http://localhost/cake/players/add" rel="nofollow">http://localhost/cake/players/add</a> dan masukkan beberapa data pemain. Seharusnya, Anda akan melihat sebuah daftar dropdown dari data tim yang sebelumnya sudah Anda masukkan. Tampilan list pemain setelah Anda memasukkan data seharusnya terlihat seperti ini (<a href="http://localhost/cake/players/" rel="nofollow">http://localhost/cake/players/</a>) :</p>
<p><a href="http://bp3.blogger.com/_qMX3iSEw_Co/SCeOPx8P8MI/AAAAAAAAAD0/zbSkVw-ioJk/s1600-h/list-pemain.jpg"><img style="display:block;text-align:center;cursor:pointer;margin:0 auto 10px;" src="http://bp3.blogger.com/_qMX3iSEw_Co/SCeOPx8P8MI/AAAAAAAAAD0/zbSkVw-ioJk/s320/list-pemain.jpg" alt="" border="0" /></a><br />Anda dapat mempelajari fitur scaffolding ini pada manual CakePHP dengan alamat <a href="http://manual.cakephp.org/chapter/scaffolding" rel="nofollow">http://manual.cakephp.org/chapter/scaffolding</a>, dan jenis asosiasi (relasi) antar tabel pada alamat <a href="http://manual.cakephp.org/chapter/models" rel="nofollow">http://manual.cakephp.org/chapter/models</a>.<br />Selamat Mencoba !</p>
<p>Disadur dari : <a href="http://idcake.web.id/blog/2007/06/06/tutorial-scaffolding-membuat-list-pemain-american-football/#more-26">idcake.web.id</a></div><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/yayakmpf.wordpress.com/38/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/yayakmpf.wordpress.com/38/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yayakmpf.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yayakmpf.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/yayakmpf.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/yayakmpf.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/yayakmpf.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/yayakmpf.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/yayakmpf.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/yayakmpf.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/yayakmpf.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/yayakmpf.wordpress.com/38/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yayakmpf.wordpress.com&blog=3711654&post=38&subd=yayakmpf&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://yayakmpf.wordpress.com/2008/05/12/tutorial-scaffolding-membuat-list-pemain-american-football/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/443d3dd1ecde2ee75f5d9743008637c0?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">yayakmpf</media:title>
		</media:content>

		<media:content url="http://bp3.blogger.com/_qMX3iSEw_Co/SCeNQx8P8LI/AAAAAAAAADs/WjwuedT-IP4/s320/list-tim.jpg" medium="image" />

		<media:content url="http://bp3.blogger.com/_qMX3iSEw_Co/SCeOPx8P8MI/AAAAAAAAAD0/zbSkVw-ioJk/s320/list-pemain.jpg" medium="image" />
	</item>
		<item>
		<title>Instalasi CakePHP</title>
		<link>http://yayakmpf.wordpress.com/2008/05/11/instalasi-cakephp/</link>
		<comments>http://yayakmpf.wordpress.com/2008/05/11/instalasi-cakephp/#comments</comments>
		<pubDate>Sun, 11 May 2008 23:42:00 +0000</pubDate>
		<dc:creator>yayakmpf</dc:creator>
				<category><![CDATA[CakePHP]]></category>

		<guid isPermaLink="false">http://yayakmpf.wordpress.com/2008/05/11/instalasi-cakephp/</guid>
		<description><![CDATA[Aku mulai dari dasar deh. Soalnya kemarin banyak yang tanya-tanya apa itu CakePHP. Buat yang belum tau apa itu CakePHP bisa baca disini. Sekarang kita mau bahas tentang instalasi CakePHP. Sebelumnya mungkin bisa download CakePHP versi terbaru disini. Nanti disana ada 2 versi yaitu versi 1.1.x ama 1.2.x. Buat belajar pake yang 1.1.x dulu aja. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yayakmpf.wordpress.com&blog=3711654&post=37&subd=yayakmpf&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="text-align:justify;">Aku mulai dari dasar deh. Soalnya kemarin banyak yang tanya-tanya apa itu CakePHP. Buat yang belum tau apa itu CakePHP bisa baca disini. Sekarang kita mau bahas tentang instalasi CakePHP. Sebelumnya mungkin bisa download CakePHP versi terbaru disini. Nanti disana ada 2 versi yaitu versi 1.1.x ama 1.2.x. Buat belajar pake yang 1.1.x dulu aja. Aku anggap semua udah dapat filenya ya.<span></span></p>
<div style="text-align:justify;"> </div>
<p style="text-align:justify;">kebutuhan server untuk penggunaan CakePHP ialah</p>
<div style="text-align:justify;"> </div>
<ul style="text-align:justify;" class="unIndentedList">
<li> HTTP server (apache), aku sarankan mod_rewrite nya di enable yah.</li>
<li> PHP version 4.3.2 atau yang lebih baru</li>
<li> Database server (MySQL, PostgreSQL,ADODB)</li>
</ul>
<div style="text-align:justify;"> </div>
<p style="text-align:justify;">Aku asumsikan :</p>
<div style="text-align:justify;"> </div>
<ul style="text-align:justify;" class="unIndentedList">
<li> telah terinstall webserver apache dan database server mySQL</li>
<li> CakePHP 1.1.19.6305</li>
</ul>
<div style="text-align:justify;"> </div>
<p style="text-align:justify;">Sekarang kita mulai</p>
<div style="text-align:justify;"> </div>
<p style="text-align:justify;">1.       Extract paket CakePHP di document_root web server temen-temen</p>
<div style="text-align:justify;"> </div>
<p style="text-align:justify;">2. Masuk ke direktori app/config/ Renamefile dengan nama database.php.default menjadi database.php. buka file database.php dengan text editor.<br /><code><br /></code></p>
<div style="text-align:justify;">
<blockquote>
<p><code> var $default = array('driver'   =&gt; 'mysql',</code>‘connect’  =&gt; ‘mysql_connect’,</p>
<p>‘host’     =&gt; ‘localhost’,</p>
<p>‘login’    =&gt; ‘user’,</p>
<p>‘password’ =&gt; ‘password’,</p>
<p>‘database’ =&gt; ‘project_name’,</p>
<p>‘prefix’   =&gt; ”);</p>
</blockquote></div>
<p style="text-align:justify;">Temen-temen tinggal mengisi config database tersebut. Sebagai contoh saya menggunakan database MySQL.<br /><code><br /></code></p>
<div style="text-align:justify;">
<blockquote>
<p><code> var $default = array('driver'   =&gt; 'mysql',</code>‘connect’  =&gt; ‘mysql_connect’,</p>
<p>‘host’     =&gt; ‘localhost’,</p>
<p>‘login’    =&gt; ‘root’,</p>
<p>‘password’ =&gt; ”,</p>
<p>‘database’ =&gt; ‘test’,</p>
<p>‘prefix’   =&gt; ”);</p>
</blockquote></div>
<p style="text-align:justify;">Parameter host isikan aja ’localhost’. Untuk parameter login temen-temen isikan username databasenya. Pada server local biasanya ’root’. Parameter password, isikan password database temen-temen. Pada server local biasanya secara default kosong. Sedang parameter database, isikan database yang akan digunakan pada project.</p>
<div style="text-align:justify;"> </div>
<p style="text-align:justify;">Sampai disini instalasi udah selesai sebenernya. Sekarang tinggal dipanggil aja lewat browser. Jika temen-temen mengikuti prosedurnya dengan benar maka akan ditemukan kata-kata ’Your database configuration file is present.’ Dan ’Cake is able to connect to the database.’ Berarti temen-temen udah berhasil menginstal CakePHP. Selamat.</p>
<p style="text-align:justify;"></p><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/yayakmpf.wordpress.com/37/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/yayakmpf.wordpress.com/37/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yayakmpf.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yayakmpf.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/yayakmpf.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/yayakmpf.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/yayakmpf.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/yayakmpf.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/yayakmpf.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/yayakmpf.wordpress.com/37/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/yayakmpf.wordpress.com/37/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/yayakmpf.wordpress.com/37/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yayakmpf.wordpress.com&blog=3711654&post=37&subd=yayakmpf&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://yayakmpf.wordpress.com/2008/05/11/instalasi-cakephp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/443d3dd1ecde2ee75f5d9743008637c0?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">yayakmpf</media:title>
		</media:content>
	</item>
	</channel>
</rss>