Posts Mentioning RSS Toggle Comment Threads | Tombol Pintas

  • yayakmpf 03:32 on 12 May 2008 Permalink | Balas |  

    Konsep Dasar CakePHP (bag IV) 

    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, dan delete (sesuai dengan standar Cake, lengkap dari model hingga view.

    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.

    Section 1

    Apakah Model Itu?

    Dalam Chapter 2: Konsep Dasar, kita sudah menyinggung sedikit tentang konsep MVC, dimana Model menjadi bagian awalnya. 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 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. Berikut contoh jika anda membuat Model User, yang kemudian disimpan di /app/model/user.php

    //Untuk membuat model dalam Cake anda harusmenurunkannya dari AppModel
    class User extends AppModel
    {
        // Pastikan untuk memulai dengan mendifinasikanvariabel modelnya sendiri.
        var $name = 'User';
        // Kemudian diikuti validasi data.
        var $validate = array();
     
        // Dan sertakan asosiasi jika ada.
     
        var $hasMany = array('Image' =>
                       array('className' => 'Image')
                       );
        // Anda juga dapat menyertakan function buatan anda sendiri:
        function makeInactive($uid)
        {
            //Silahkan tulis logic-nya disini...
        }
    }
    ?>

    Section 2

    Function dalam Model

    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 cake/libs/model.php. Jika anda ingin mengetahui lebih banyak tentang function dalam Model, silahkan kunjungi http://api.cakephp.org untuk info lebih lengkap. Yang akan dibahas disini adalah function yang paling sering digunakan.

    Pengambilan Data

    Berikut adalah beberapa cara mendapatkan data menggunakan model:

    • findAll
    • string $conditions
    • array $fields
    • string $order
    • int $limit
    • int $page
    • int $recursive

    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>4”.

    Ketika opsi $recursive diset lebih besar dari 1, operasi findAll() akan mengembalikan model yang diasosiasikan dengan model yang ditemukan oleh findAll().

    • find
    • string $conditions
    • array $fields
    • string $order
    • int $recursive

    Mengembalikan field tertentu (atau seluruhnya jika tidak ditentukan) dari record pertama yang sesuai dengan $conditions.

    Ketika opsi $recursive diset ke suatu nilai integer antara 1 dan 3, find() akan mengembalikan model yang diasosiasikan dengan model yang ditemukan oleh find().

    • findAllBy
    • string $value

    Method ini bisa dipakai sebagai jalan pintas untuk mencari suatu nilai tertentu dari suatu field dalam tabel. 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:

    $this->Post->findByTitle(‘My First Blog Post’);
    $this->Author->findByLastName(‘Rogers’);
    $this->Property->findAllByState(‘AZ’);
    $this->Specimen->findAllByKingdom(‘Animalia’);

    Hasil yang didapatkan dalam bentuk Array seperti find() atau findAll().

    • findNeighbours
    • string $conditions
    • array $field
    • string $value

    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. Namun hanya dapat digunakan pada tipe data ‘numeric’ dan ‘date’. Contoh:

    class ImagesController extends AppController
    {
    function view($id)
    {
    // Ini cara untuk mengambil data sebuah Image

    $this->set(‘image’, $this->Image->find(“id = $id”);

    // Tapi kita juga ingin melihat yang sebelum dan sesudahnya…

    $this->set(‘neighbours’, $this->Image->findNeighbours(null, ‘id’, $id);

    }
    }

    Kode di atas memberi kita suatu array $image[‘Image’], sekaligus dengan $ neighbours['prev']['Image']['id'] dan $neighbours['next']['Image']['id'] pada sisi view.

    • field
    • string $name
    • string $conditions
    • string $order

    Mengembalikan sebuah string dari field tunggal dari record pertama sesuai $conditions dan urut berdasar $order.

    • findCount
    • string $conditions

    Mengembalikan jumlah record sesuai $conditions.

    • generateList
    • string $conditions
    • string $order
    • int $limit
    • string $keyPath
    • string $valuePath

    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. 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:

    $this->set(
    ‘Roles’,
    $this->Role->generateList(null, ‘role_name ASC’, null, ‘{n}.Role.id’, ‘{n}.Role.role_name’)
    );

    //Kode di atas akan menghasilkan:
    array(
    ‘1′ => ‘Account Manager’,
    ‘2′ => ‘Account Viewer’,
    ‘3′ => ‘System Manager’,
    ‘4′ => ‘Site Visitor’
    );

    • read
    • string $fields
    • string $id

    Gunakan read() ini untuk memperoleh field dan nilainya dari record yang telah diload atau record yang ditentukan oleh $id.

    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().

    • query
    • string $query
    • execute
    • string $query

    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():

    query(“SELECT first_name FROM posters_table
    WHERE poster_id = 1″);
    $firstName = $ret[0]['first_name'];
    return $firstName;
    }
    }
    ?>

    Kondisi Pencarian Kompleks (menggunakan array)

    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. Syntax ini dapat memisahkan setiap elemen dalam query (field, value, operator, dll) ke bagian yang bisa dimanipulasi. Salah satu contoh sederhana query berbasis array:

    $conditions = array(“Post.title” => “This is a post”);

    //Contoh penggunaan dalam suatu model:
    $this->Post->find($conditions);

    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. Ini untuk menghindari terjadinya collision dalam aplikasi anda. Ok, lalu bagaimana jika kita ingin menggunakan operator? Hal tersebut sama mudahnya. Katakan jika kita ingin menemukan seluruh Post dimana title nya bukan “This is a post”:

    array(“Post.title” => ” This is a post”)

    Cake dapat menangani semua operator pembanding SQL, termasuk ekspresi seperti LIKE, BETWEEN, atau REGEX. Yang jadi catatan adalah jangan lupa memberi spasi antara operator dan ekspresi atau value. Satu-satunya pengualian disini adalah ekspresi IN (…). Baik, sekarang kita ingin mencari Post dengan beberapa value:

    array(“Post.title” => array(“First post”, “Second post”, “Third post”))

    Jika kita ingin membatasi lagi pencarian lagi caranya hanya dengan menambahkan pasangan key/value ke array:

    array( “Post.title” => array(“First post”, “Second post”, “Third post”), “Post.created” => “> ” . date(‘Y-m-d’, strtotime(“-2 weeks”)))

    Secara default, Cake menggunakan operator Boolean AND untuk operasi join seperti di atas. Jika kita ingin memakai operator Boolean lain, maka bisa dengan cara seperti ini:

    array(“or” => array ( “Post.title” => array(“First post”, “Second post”, “Third post”), “Post.created” => “> ” . date(‘Y-m-d’, strtotime(“-2 weeks”)) ))

    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’ atau yang dibuat dua minggu yang lalu, tapi dibatasi pada Post yang ditulis oleh ‘Bob’:

    array (“Author.name” => “Bob”, “or” => array ( “Post.title” => “LIKE %magic%”, “Post.created” => “> ” . date(‘Y-m-d’, strtotime(“-2 weeks”) ))

    Menyimpan Data

    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:

    Array( [NamaModel] => Array ( [namafield1] => ‘value’ [namafield2] => ‘value’ ))

    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 data[NamaModel][namafield]. Namun bagaimanapun juga $html->input(‘Model/fieldname’) adalah cara termudah.

    Data yang dikirim dari form secara otomatis akan terformat seperti di atas dan diletakkan dalam $this->data didalam Controller. Berikut contoh fungsi edit pada Controller Property:

    function edit($id)
    {

    //Catatan: Model Property secara otomatis diletakkan oleh Cake ke $this->Property.

    // Mengecek apakah form diisi data…
    if (empty($this->data))
    {
    $this->Property->id = $id;
    $this->data = $this->Property->read();//membaca field pada form
    }
    else
    {
    // Perhatikan cara menyimpan data berikut. Cake juga secara otomatis dapat melakukan validasi checking
    if ($this->Property->save($this->data['Property']))
    {
    //Pesan Flash yang ditampilkan dan redirect.
    $this->flash(‘Your information has been saved.’,
    ‘/properties/view/’.$this->data['Property']['id'], 2);
    }
    //jika ada field yang invalid atau gagal menyimpan, Cake juga akan merender halaman error.
    }
    }

    Perhatikan bagaimana operasi menyimpan ini terletak pada suatu kondisional validasi sesuai aturan yang telah dibuat. Lebih lanjut tentang Validasi Data akan dibahas nanti. Sekarang jika anda tidak ingin save() memvalidasi data anda gunakan save($data, false).

    Beberapa fungsi lain yang berguna:

    • del
      • string $id
      • boolean $cascade

    Menghapus model sesuai $id.

    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’.

    del() akan mengembalikan nilai true jika sukses.

    · saveField

    o string $name

    o string $value

    Digunakan untuk menyimpan nilai field tunggal.

    · getLastInsertId

    Mengembalikan nilai ID dari record yang terakhir dibuat.

    Callback Model

    Dalam Model Cake, dikenal juga Callback yang memperbolehkan anda untuk melakukan sesuatu sebelum atau setelah suatu operasi. Berikut method Callback dalam Cake:.

    · beforeFind

    o string $conditions

    Set ke ‘return true’ ketika anda ingin method find dieksekusi, dan ‘false’ jika ingin menghentikan perintah find.

    · afterFind

    o array $results

    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.

    • beforeValidate

    Gunakan callback ini untuk memodifikasi data Model sebelum divalidasi. Bisa juga digunakan untuk aturan validasi yang lebih kompleks, menggunakan Model::invalidate().Dalam konteks ini, data Model dapat diakses melalui $this->data. Method ini juga harus diset ke true, dan sebaliknya false jika ingin menghentikan save()..

    • beforeSave

    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:

    // Berikut adalah field Date/time yang dibuat helper HTML:
    
    // Kode ini akan dilihat di View
    
    $html->dayOptionTag('Event/start');
    
    $html->monthOptionTag('Event/start');
    
    $html->yearOptionTag('Event/start');
    
    $html->hourOptionTag('Event/start');
    
    $html->minuteOptionTag('Event/start');
    
    /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
    
    // Kode berikut akan ada di Model Event, callback beforeSave digunakan untuk merubah format waktu sebelum disimpan ke database:
    
    function beforeSave()
    
    {
    
     $this->data['Event']['start'] = $this->_getDate('Event', 'start');
    
     return true;
    
    }
    
    function _getDate($model, $field)
    
    {
    
     return date('Y-m-d H:i:s', mktime(
    
         intval($this->data[$model][$field . '_hour']),
    
         intval($this->data[$model][$field . '_min']),
    
         null,
    
         intval($this->data[$model][$field . '_month']),
    
         intval($this->data[$model][$field . '_day']),
    
         intval($this->data[$model][$field . '_year'])));
    
    }
    • afterSave
    • beforeDelete

    Set ke ‘return true’ ketika anda ingin penghapusan dieksekusi, dan ‘false’ jika ingin menghentikan perintah penghapusan.

    • afterDelete

    Section 3

    Variabel Model

    Ketika anda bekerja dengan Model, ada sejumlah variabel yang bisa anda manfaatkan untuk mendapat fungsi khusus dari Cake.

    $primaryKey

    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.

    $recursive

    Variabel ini mengatur kedalaman tingkat pengambilan Model yang terasosiasi ketika menggunakan operasi find() dan findAll().

    Contoh : seandainya anda mempunyai Groups yang mempunyai banyak Users yang masing-masing mempunyai Articles.

    Opsi dalam Model::recursive

    $recursive = 0

    Cake mengambil data Group

    $recursive = 1

    Cake mengambil sebuah Group dan User yang terasosiasi

    $recursive = 2

    Cake mengambil sebuah Group, User yang terasosiasi, dan Articles yang dimiliki User tersebut

    $transactional

    Memberitahukan Cake apakah Model dapat melakukan transaksi atau tidak (seperti begin/commit/rollback). Menggunakan nilai Boolean. Hanya dapat untuk database tertentu.

    $useTable

    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.

    $validate

    Merupakan array yang digunakan untuk memvalidasi data ke model (akan ada pembahasan lebih lanjut di Chapter lain).

    $useDbConfig

    Masih ingat setting database pada Chapter sebelumnya di /app/config/database.php? Gunakan variabel ini untuk berpindah antara nama koneksi database yang ada di file tersebut. Nilai defaultnya adalah ‘default’.

     
  • yayakmpf 03:15 on 12 May 2008 Permalink | Balas |  

    Konsep Dasar CakePHP (bag III) 

    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 database tersebut. Sekarang klik tab SQL yang ada di atas frame sebelah kanan. Copy query berikut dan paste ke text area di halaman tersebut.

    CREATE TABLE posts (

    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,

    title VARCHAR(50),

    body TEXT,

    created DATETIME DEFAULT NULL,

    modified DATETIME DEFAULT NULL

    );

    /* Kemudian masukkan beberapa Post untuk testing*/

    INSERT INTO posts (title,body,created)

    VALUES (‘The title’, ‘This is the post body.’, NOW());

    INSERT INTO posts (title,body,created)

    VALUES (‘A title once again’, ‘And the post body follows.’, NOW());

    INSERT INTO posts (title,body,created)

    VALUES (‘Title strikes back’, ‘This is really exciting! Not.’, NOW());

    Klik go. Selanjutnya baru kita memulai tahap konfigurasinya.

    Section 1

    Konfigurasi Database

    Konfigurasi database pada Cake terdapat pada file app/config/database.php. Namun pada instalasi awal Cake tidak terdapat file tersebut, jadi anda harus mengcopy dari file database.php.default. Ubah namanya menjadi database.php saja.Buka file tersebut dengan web editor anda (Dreamweaver, Notepad++, EditPlus, atau yang lain) lihat pada bagian:

    var $default = array(‘driver’ => ‘mysql’,

    ‘connect’ => ‘mysql_connect’,

    ‘host’ => ‘localhost’,

    ‘login’ => ‘user’,

    ‘password’ => ‘password’,

    ‘database’ => ‘project_name’,

    ‘prefix’ => ”);

    Ubah bagian login dan password sesuai setting MySQL anda. Kemudian ‘project_name’ pada database menjadi blogcake seperti yang sudah kita buat tadi.

    Catatan untuk variabel ’prefix’ : jika anda memasukkan string ke dalamnya, maka jika anda melakukan query SQL untuk tabel akan mengarah ke prefix_namatabel. Contoh jika anda punya tabel posts seperti di atas, dan ’prefix’=>’blog_’, maka query akan mengarah ke ‘blog_posts’. Sekali anda mendefinisikan prefix, keseluruhan tabel dalam database harus mendapat imbuhan prefix tersebut. Dan untuk tabel HABTM join, anda cukup menambah prefix sekali: blog_categories_posts, bukan blog_categories_blog_posts.

    CakePHP mendukung beberapa driver dabatabase berikut:

    1. mysql

    2. postgres

    3. sqlite

    4. pear-drivername (contoh pear-mysql)

    5. adodb-drivername

    Kata kunci ‘connect’ pada koneksi $default 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 ‘mysql_connect’ saja.

    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:

    1. 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.

    2. Dalam tabel harus ada primary key bernama ‘id’.

    3. Jika ada relasi, gunakan foreign key seperti ‘article_id’. Nama tabel berupa kata tunggal/singular, diikuti underscore, kemudian diakhiri ‘id’.

    4. Jika dalam tabel terdapat kolom ‘created’ dan/atau ‘modified’, Cake secara otomatis akan mengisinya sesuai dengan keadaan.

    Selain $default dalam database.php, anda juga akan melihat seting $test connection di bawahnya. Silahkan isi sesuka anda dengan aturan sama seperti di atas, kemudian anda bisa menggunakannya dengan cara seperti:

    var $useDbConfig = ‘test’;

    Sampai disini, kita akan kembali mengetes instalasi Cake kita. Jika benar, anda akan mendapatkan hasil seperti ini:

    Section 2


    Konfigurasi Umum

    Konfigurasi umum/global Cake dapat ditemukan pada file app/config/core.php. Sebenarnya tidak ada yang anda perlu ubah untuk tutorial ini, namun saya akan tetap memberitahu anda beberapa point penting di file ini.

    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.

    CAKE_SESSION_COOKIE: ubah nilainya ke nama cookie yang anda gunakan untuk user session di aplikasi anda.

    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:

    1. high: session akan berakhir setelah 10 menit dari tidak adanya aktifitas apapun, session ids diregenerasi pada setiap request.

    2. medium: session akan berakhir setelah 20 menit dari tidak adanya aktifitas apapun.

    3. low: session akan berakhir setelah 30 menit dari tidak adanya aktifitas apapun.

    CAKE_SESSION_SAVE: menentukan bagaimana data session akan disimpan. Silahkan memasukkan salah satu nilai berikut (urut dari yang paling low-security sampai high-security):

    1. cake: data session akan disimpan dalam tmp/ di instalasi Cake anda.

    2. php: data session akan disimpan sesuai definisi php.ini.

    3. 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.

    Section 3


    Konfigurasi Routing

    Routing merupakan bagian dari mod_rewrite PHP yang dapat ‘memetakan’ URL ke controller/action/params. Dengan routing URL bisa lebih cantik dan lebih dapat dikonfigurasi. Routing dapat ditentukan lewat file app/config/routes.php. Pattern/pola yang digunakan untuk routing seperti berikut:

    $Route->connect (‘URL’, array(‘controller’=>’controllername’, ‘action’=>’actionname’, ‘firstparam’))

    Dimana:

    1. URL adalah regular expression (regex) dari URL Cake yang akan anda petakan,

    2. controllername adalah nama controller yang anda akan sertakan

    3. actionname adalah nama action dari controller

    4. firstparam adalah nilai parameter pertama dari action yang anda tentukan

    Parameter lain yang menyertai firstparam akan dipassing sebagai parameter ke action controller.

    Dalam tutorial ini tidak ada yang perlu diubah dari file konfigurasi routing tersebut.

    Section 4


    Konfigurasi Routing Lanjut: Admin dan Webservices

    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.

    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:

    /admin/products/add CAKE_ADMIN = ‘admin’

    Nama action di ProductsController = ‘admin_add()’


    /superuser/news/post CAKE_ADMIN = ’superuser’

    Nama action di NewsController = ’superuser_post()’


    /su/posts/delete CAKE_ADMIN = ’su’

    Nama action di PostsController = ’su_delete()’


    Setelah diset variabel CAKE_ADMIN, maka anda dapat dengan mudah menggunakan routing admin ini dengan menggunakan:

    $this->params[CAKE_ADMIN];

    atau

    $this->params['admin'];

    (dengan anggapan bahwa ‘admin adalah variabel dari CAKE_ADMIN).

    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…

    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:

    1. rss

    2. xml

    3. rest

    4. soap

    5. xmlrpc

    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.

     
    • dicky 12:44 on 5 Agustus 2008 Permalink | Balas

      wah makasih banyak om atas tulisannnya yang gamblang dan jelas pake bahasa indonesia…..

      soalnya aye lagi belajar cakephp membuat 1 aplikasi.

    • Tomy 22:25 on 9 November 2008 Permalink | Balas

      trus cara buat web service nya gmana mas?

      misalkan aja database nya isinya nama negara trus mo nyajiin nama negara yg berawal huruf ‘A’

      mohon bimbingannya..

    • Tyanz Permana 12:08 on 21 Desember 2008 Permalink | Balas

      mantap tutorialnya mas, saya tunggu kelanjutannya yah..

  • yayakmpf 02:55 on 12 May 2008 Permalink | Balas |  

    Konsep Dasar CakePHP (bag II) 

    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:

    1. Sebuah server HTTP (seperti Apache) dengan session enabled dan mod_rewrite(mod_rewrite ini lebih disukai dalam keadaan enabled)
    2. PHP 4.3.2 atau di atasnya (5.x)
    3. Database engine(MySQL, PostgreSQL, dan yang mendukung ADODB)

    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.

    Sebelum mensetup Cake, pastikan mod_rewrite dalam httpd.conf Apache diperbolehkan. Caranya cari dalam folder instalasi Apache file conf/httpd.conf. Edit dengan notepad, hilangkan tanda pagar (#) di awal baris berikut:

     LoadModule rewrite_module modules/mod_rewrite.so

    Pastikan juga agar Apache mengijinkan akses .htaccess override. Di file yang sama, cari kata-kata AllowOverride pada atau , set ke All, sehingga menjadi AllowOverride All.

    Jika anda mengikuti langkah sebelumnya, untuk menginstal development setup anda tinggal mengekstrak ke folder /appserv/www. Sehingga nampak seperti berikut:


    /appserv

    /www

    /cake

    /app

    /cake

    /vendors

    .htaccess

    index.php

    Ketikkan localhost/cake pada browser anda, maka anda akan mendapatkan tampilan seperti berikut:


    (Perhatikan Your database configuration file is not present ! Pesan tersebut muncul karena memang sampai sejauh ini kita belum mengonfigurasi database apa yang aka digunakan. Harap sabar…)

    Nantinya, jika mod_rewrite dalam keadaan enabled, maka URL anda akan berbentuk seperti ini:

    http://www.example.com/cake/controllerName/actionName


    /param1/param2

    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
    (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)

     
  • yayakmpf 02:09 on 12 May 2008 Permalink | Balas |  

    Konsep Dasar CakePHP (bag I) 

    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 hubungannya dengan table/record yang lain. Model juga dapat berisi aturan validasi data, yang biasa diterapkan ketika data model di-insert atau update.

    View mewakili file tampilan Cake, yang merupakan HTML biasa dengan tambahan kode PHP.

    Sedangkan Controller 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.

    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.

    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: app, cake, dan vendors. Secara lengkap berikut susunan folder dalam CakePHP:

    /app
        /config          - Berisi file-file konfigurasi database, ACL, dll 
     
        /controllers     - Controllers aplikasi anda 
            /components  - Components aplikasi anda
     
        /index.php       - mempersilahkan anda untuk mengembangkan cake dengan /appsebagai DocumentRoot
     
        /models          - Models aplikasi
     
        /plugins         - Plugins aplikasi
     
        /tmp             - digunakan untuk caches dan logs(set folder ini menjadi writable)
     
        /vendors         - Berisi third-party libaries untuk aplikasi
     
        /views           - Views aplikasi
            /elements    - Elements, bagian dari tampilan
            /errors      - Custom error pages
            /helpers     - Helpers
            /layouts     - Application layout files
            /pages       - Static views 
     
        /webroot         - DocumentRoot untuk aplikasi
            /css
            /files
            /img
            /js
     
    /cake                - Library inti Cake. Jangan edit file apapun dalam folder ini.
     
    index.php           
     
    /vendors             - Untuk server-wide third-party libraries.
     
    VERSION.txt          - Versi Cake yang anda gunakan

     
  • yayakmpf 01:37 on 12 May 2008 Permalink | Balas |  

    Bake dan Scaffolding Pada CakePhp 

    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.

    Bake
    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.

    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.

    Contoh penggunaan Bake pada pembuatan model

    [M]odel[C]ontroller[V]iewPlease select a class to Bake: (M/V/C)>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.
    
    > 1
    
    Would you like to supply validation criteria for the fields in your model? (y/n)[y]
    
    > n
    
    Would you like to define model associations (hasMany, hasOne, belongsTo, etc.)? (y/n)[y]
    
    > n
    
    —————————————————————The following model will be created: —————————————————————
    
    Model Name: Log
    
    DBConnection: default
    
    Model Table: logs
    
    Validation: Array
    
    (
    
    )—————————————————————Look okay? (y/n)
    
    [y] > 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] > n 

    Hasil eksekusi bake di atas akan

    menghasilkan file app/model/log.php

    <?
    class Log extends AppModel{
    }
    ?>

    Contoh penggunaan bake pada pembuatan controller

    Please select a class to Bake: (M/V/C)> c---------------------------------------------------------------
    
    Controller Bake:---------------------------------------------------------------  
    Controller name? Remember that Cake controller names are plural.
    
    > logs
    
    Would you like bake to build your controller interactively?
    
    Warning: Choosing no will overwrite Logs controller if it exist. (y/n)[y]
    
    > y
    
    Would you like this controller to use other models besides ‘Log’? (y/n)[n]
    
    > n
    
    Would you like this controller to use other helpers besides HtmlHelper? (y/n)[n]
    
    > n
    
    Would you like this controller to use any components? (y/n)[n]
    
    > n
    
    Would you like to include some basic class methods (index(), add(), view(), edit())? (y/n)[n]
    
    > y
    
    ————————————————————— 


    The following controller will be created:
    
    —————————————————————
    
    Controller Name: logs
    
    —————————————————————
    
    Look okay? (y/n)[y]
    
    > 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  


    Cake test suite not installed.
    
    Do you want to bake unit test files anyway? (y/n)[y]
    
    > n

    Hasil pengeksekusian di atas akan menghasilkan file

    app/controllers/Logs_Controller.php

    Penggunaan bake pada pembuatan view

    Please select a class to Bake: (M/V/C)---------------------------------------------------------------
    
    View Bake:
    
    ---------------------------------------------------------------Controller Name? (plural)
    
    > logsWould you like bake to build your views interactively
    
    ?Warning: Choosing no will overwrite views if it exist.
    
    (y/n)[y]
    
    > 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]
    
    > 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. 

    Pengeksekusian di atas akan menghasilkan file file :

    app/views/logs/add.thtml
    app/views/logs/index.thtml
    app/views/logs/edit.thtml
    app/views/logs/view.thtml

    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.
    Contoh model yang menggunakan fitur scaffolding
    <?class Log extends AppModel{}?>
    
    Contoh controller yang menggunakan fitur scaffolding
    
    <?phpclass LogsController extends AppController{var $scaffold;}?>
    
    

    Kedua kelas di atas akan otomatis menghasilkan aplikasi web sederhana dengan kemampuan CRUD (Create Update Delete).

    Kesimpulan:

    CakePhp adalah sebuah Rapid ApplicationFramework yang bisa mempercepat
    pembuatan sebuah aplikasi web. Salah satu fitur yang dimiliki CakePhp
    adalah Bake dan Scaffolding. Dengan Bake dapat dibuat template untuk
    masing masing model, view, dan controller sehingga developer tidak
    perlu membuat kode dari awal. Sedang Scaffolding sangat berguna dalam membuat aplikasi web sederhana dengan fitur CRUD.

     
  • yayakmpf 01:33 on 12 May 2008 Permalink | Balas |  

    Introduction CakePhp 

    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 (kerangka
    kerja) yang bisa membuat proses pengembangan aplikasi web menjadi lebih
    cepat dan efiisen. CakePhp menyediakan pustaka (library), class, dan
    infrastruktur bagi programmer dalam membuat aplikasi web.

    Dalam proses pengembangan plikasi web CakePhp menggunakan pola MVC ( Model View Controller). imana pada pola ini kode pengaksesan database dan kode untuk
    menampilkan data dipisahkan. Pola ini memiliki banyak keuntungan salah
    satunya adalah proses pengembangan logika bisnis( bussiness logic),
    pembuatan basis data, dan desain antar muka dapat dilakukan oleh orang
    yang berbeda dan secara mandiri, sehingga proses pembuatan aplikasi
    bisa menjadi lebih cepat

    Untuk menginstall CakePhp maka terlebih dahulu harus disediakan:

    1. HTTP Server( Seperti Apache, dengan session dan mod_rewrite dienabled)
    2. PHP 4.3.2 atau yang lebih baru, CakePhp dapat bekerja dengan php versi 4 dan 5 dengan baik.
    3. Database Server( Saat ini CakePhp baru mendukung MySql, Postgresql, dan wrapper untuk AdoDB)

    Versi terbaru CakePhp dapat didownload di
    http://cakeforge.org/projects/cakephp/. Proses Penginstallan CakePhp
    sangat mudah cukup dengan diekstrak pada direktori root HTTP server.

    /wwwroot         /cake          /app          /cake          /vendors         .htaccess          index.php

    Setelah itu ada beberapa hal yang mesti dicek.

    • Pastikan file .htaccess bisa ditulisi. Untuk itu padasettingan dokumen root web server anda pastikan bagian “AllowOverride”adalah All.
    • Pastikan modul mod_rewrite telah terinstall dan dimuat oleh web server anda.

    Untuk memastikan cakephp telah terinstall dengan benar maka bukalah alamat http://localhost/cake

    pada browser, jika cakephp diekstrak pada folder cake pada dokumen root tadi.

    Selanjutnya jika Cakephp telah terinstall, maka proses selanjutnya

    adalah konfigurasi database. Pada CakePhp konfigurasi database disimpan

    di app/config/database.php. CakePhp yang baru terinstall tidak memiliki

    file ini, untuk itu kopi file app/config/database.php.default menjadi

    app/config/database.php lalu ubah sesuai dengan database yang akan

    digunakan.

    var $default = array('driver' => 'mysql',                     'connect' =>'mysql_connect',                     'host'    => 'localhost',
    
                       'login'   => 'user',
    
                       'password' => 'password',
    
                       'database' => 'project_name',
    
                       'prefix'   => '');
    

    Nah sekarang lanjut ke tahap pemrogramannya. Dalam membuat aplikasi dengan CakePhp ada tiga hal yang mesti dibuat yaitu

    1. 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
    2. 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
    3. View, berisi kode kode yang akan mengatur bagaimana data datadari controller tadi akan ditampilkan. Kode view disimpan dalam folderapp/views.

    Tambahan (instalasi) :

    1. Edit http.conf dengan mengaktifkan mod_rewrite.so
    2. Kemudian (masih di http.conf) pastikan direktori webroot (misal htdocs) telah memiliki setting seperti berikut :
      Options Indexes Multiviews,
      AllowOverride All,
      Order allow,
      deny Allow from all

      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.

    3. 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.
    4. 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.
    5. Finish. CakePHP anda sudah bisa digunakan, walaupun mungkin masih ada settingan optional yang harus anda lakukan.

     
  • yayakmpf 00:59 on 12 May 2008 Permalink | Balas |  

    CakePHP dan KCAPTCHA 

    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 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 :

    $show_credits = true ;

    menjadi

    $show_credits = false;

    tentu jika Anda ingin menghargai pencipta aplikasi ini, silahkan tetap menampilkannya. Anda bisa membaca keterangan yang ada dalam file tersebut sebelum melakukan pengaturan.

    KEDUA :
    Buat sebuah file komponen dengan nama captcha.php dengan script sebagai berikut :

    <?php

    class CaptchaComponent extends Object
    {
    function startup(&$controller)
    {
    $this->controller = $controller;
    }
    function render()
    {
    vendor(’kcaptcha/kcaptcha’);
    $kcaptcha = new KCAPTCHA();
    $this->controller->Session->write(’captcha’, $kaptcha->getKeyString());
    }
    }
    ?>

    Simpan file tersebut pada path “instalasiCake/app/controllers/components/captcha.php”

    KETIGA :
    Saatnya membuat script validasi pada Controller Anda. Anggap Controller Login adalah Controller yang akan menghandle halaman login Anda.

    <?php

    class UsersController extends AppController
    {

    /*tambahkan pendeklarasian komponen Captcha*/
    var $components = array(’Captcha’);

    /* menambahkan script validasi */
    if(isset($_SESSION[’captcha’]) && $_SESSION[’captcha’] == $_POST[’keystring’]) {

    //masukkan script Anda yang lainnya di sini

    }
    else {
    //tampilkan pesan kesalahan
    }

    /*fungsi captcha untuk rendering image
    function captcha()
    {
    $this->Captcha->render();
    }

    }
    ?>

    Jangan lupa untuk menyimpan Controller Login yang telah Anda modifikasi sedemikian rupa seperti di atas.

    KEEMPAT :

    Kini kita akan membuat tampilan image CAPTCHA. Pada bagian View dari aplikasi CakePHP Anda, tambahkan script di bawah ini untuk menampilkan image CAPTCHA :

    <img src=”<?php echo $html->url(‘/logins/captcha’); ?>” />

    Untuk memasukkan input teks dari image CAPTCHA yang terbaca oleh pengunjung situs Anda, tambahkan script :

    <input type=”text” name=”keystring”>

    KELIMA :

    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 :

    <?
    phpinfo();
    ?>

    Selamat berjuang melawan spam-spam nakal.

     
    • Tyanz Permana 12:19 on 21 Desember 2008 Permalink | Balas

      wah mantep bener tutorialnya mas, kalo gini terus saya jadi pembaca setia nih..

  • yayakmpf 00:31 on 12 May 2008 Permalink | Balas |  

    Blog Making Tutorial From IBM Sites 

    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)

     
  • yayakmpf 00:10 on 12 May 2008 Permalink | Balas |  

    Tutorial Scaffolding – Membuat List Pemain American Football 

    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 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.
    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.

    Membuat Tabel Database

    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:

    CREATE TABLE players (
    id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    firstname VARCHAR(50) NOT NULL,
    position VARCHAR(25) NOT NULL,
    team_id SMALLINT(6)
    )

    CREATE TABLE teams (
    id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    )

    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.

    Menggunakan Scaffolding
    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.
    Ada beberapa peraturan yang harus ditaati supaya fitur scaffolding ini berjalan dengan baik :

    • 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).
    • Tabel yang akan kita prototipe-kan harus dipetakan pada controller yang mendefinisikan variabel $scaffold.
    • 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.

    Mendefinisikan Model dan Controller

    Buat file controller berikut ini dan isikan dengan script berikut :

    <?php
    class PlayersController extends AppController
    {
    var $scaffold;
    }
    ?>

    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/ .

    <?php
    class TeamsController extends AppController
    {
    var $scaffold;
    }
    ?>

    Berikutnya, kita akan mendefinisikan model Player. Buat sebuah file bernama player.php berisi script di bawah ini dan simpan pada direktori /app/models/ .

    <?php
    class Player extends AppModel
    {
    var $name = ‘Player’;
    var $belongsTo = array(’Team’ =>
    array(’className’ => ‘Team’,
    ‘conditions’ => ”,
    ‘order’ => ”,
    ‘foreignKey’ => ‘team_id’
    )
    );
    }
    ?>

    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/ :

    <?php
    class Team extends AppModel
    {
    var $name = ‘Team’;
    var $displayField = ‘name’;
    }
    ?>

    Percaya atau tidak, kini Anda telah memiliki sebuah aplikasi insert, edit, dan delete untuk tabel players dan teams ! Buka pada browser Anda link http://localhost/cake/teams/add dan tambahkan sebuah tim American Football baru. Tampilan list dari tim Anda setelah Anda masukkan beberapa data seharusnya terlihat sebagai berikut (http://localhost/cake/teams) :


    Berikutnya, arahkan browser Anda pada link http://localhost/cake/players/add 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 (http://localhost/cake/players/) :


    Anda dapat mempelajari fitur scaffolding ini pada manual CakePHP dengan alamat http://manual.cakephp.org/chapter/scaffolding, dan jenis asosiasi (relasi) antar tabel pada alamat http://manual.cakephp.org/chapter/models.
    Selamat Mencoba !

    Disadur dari : idcake.web.id

     
  • yayakmpf 23:42 on 11 May 2008 Permalink | Balas |  

    Instalasi CakePHP 

    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.

    kebutuhan server untuk penggunaan CakePHP ialah

    • HTTP server (apache), aku sarankan mod_rewrite nya di enable yah.
    • PHP version 4.3.2 atau yang lebih baru
    • Database server (MySQL, PostgreSQL,ADODB)

    Aku asumsikan :

    • telah terinstall webserver apache dan database server mySQL
    • CakePHP 1.1.19.6305

    Sekarang kita mulai

    1. Extract paket CakePHP di document_root web server temen-temen

    2. Masuk ke direktori app/config/ Renamefile dengan nama database.php.default menjadi database.php. buka file database.php dengan text editor.

    var $default = array('driver' => 'mysql',‘connect’ => ‘mysql_connect’,

    ‘host’ => ‘localhost’,

    ‘login’ => ‘user’,

    ‘password’ => ‘password’,

    ‘database’ => ‘project_name’,

    ‘prefix’ => ”);

    Temen-temen tinggal mengisi config database tersebut. Sebagai contoh saya menggunakan database MySQL.

    var $default = array('driver' => 'mysql',‘connect’ => ‘mysql_connect’,

    ‘host’ => ‘localhost’,

    ‘login’ => ‘root’,

    ‘password’ => ”,

    ‘database’ => ‘test’,

    ‘prefix’ => ”);

    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.

    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.

     
c
Tulis postingan baru
j
tulisan berikutnya/komentar berikutnya
k
tulisan sebelumnya/komentar sebelumnya
r
balas
e
sunting
o
tampilkan/sembunyikan komentar
t
ke atas
l
masuk ke log
h
show/hide help
esc
batal