Anda di halaman 1dari 9

Mendapatkan Kohana

Download Kohana dari sini: http://www.kohanaphp.com/download


(terakhir versi 2.3.4. Download beserta semua modul dan vendor tools yang
ditawarkan aja)
Instalasi
Untuk tutorial ini, akan digunakan XAMPP untuk server, database, dan PHPnya.
1. Ekstrak file Kohana, rename nama file sesuai selera
2. Upload ke webserver (folder htdocs di XAMPP)
3. Edit file konfigurasi global di folder /application/config/config.php
4. Tes apakah Kohana berjalan: buka browser dan buka alamat
http://localhost/namafolderkohana. Dalam tutorial ini saya menggunakan
nama kohanablog
Koneksi Database
Koneksi database juga perlu diatur. Buka /system/config/database.php. Berikut
ini yang penting untuk diperhatikan:
'type'
=> 'mysql',
'user'
=> 'root',
'pass'
=> '',
'host'
=> 'localhost',
'database' => 'kohanablog'
Isi sesuai konfigurasi yang dipakai.
Operasi CRUD (Create, Retrieve, Update, Delete) Sederhana
Untuk belajar operasi CRUD ini, ceritanya kita akan buat blog. Karena Kohana
menggunakan prinsip MVC, jadi semua operasi CRUD juga akan dijalankan
dengan membuat class-class model, view, dan controller. Semua class yang
kita buat akan disimpan di bawah folder /application/
Sebelum mulai coding, buat dulu database schema dan tabel yang diperlukan
(pada setting database di atas, skema yang digunakan namanya
kohanablog). Sementara tabelnya satu dulu, yaitu post dengan 3 field: id
(primary, auto increment), title, dan text.
Model Class
Model adalah class yang menjelaskan fungsi-fungsi dasar sebuah entitas dan
akan berhubungan dengan database. Sekarang kita akan buat class model
untuk sebuah entitas utama dalam dunia per-blog-an, yaitu post.
Simpan kode di bawah ini dalam file /models/post.php
<?php
class Post_Model extends Model
{
public function __construct($id = NULL)
{
parent::__construct($id);
}
public function create_post($data)
{
$this->db->insert('posts', $data);
}

public function retrieve_post($post_id)


{
$this->db->from('posts');
$this->db->select('*');
$this->db->where('id', $post_id);
$result=$this->db->get();
return $result[0];
}
public function retrieve_posts()
{
$this->db->from('posts');
$this->db->select('*');
return $this->db->get();
}
public function update_post($post_id, $data)
{
$this->db->where('id', $post_id);
$this->db->update('posts', $data);
}
public function delete_post($post_id)
{
$this->db->delete('posts', array('id'=>$post_id));
}
}
?>
function __construct adalah konstruktor untuk model class. Dalam class ini,
fungsi-fungsi dibuat sesuai dengan operasi CRUD.
View Class
View adalah class yang akan berhubungan lansung dengan user. View class
menangkap input dari user dan mengirimkannya ke controller untuk diproses
lebih lanjut. View class juga menangkap output dari controller dan
menampilkannya kepada user.
Untuk blog sederhana kita kali ini, kita akan buat 2 halaman view:
1. Index , yang berisi semua post yang pernah dibuat
2. Add Post, tampilan untuk menambah post ke dalam blog
3. Update Post, tampilan untuk mengubah post
4. View post, untuk menampilkan satu post
Index view class
Simpan kode di bawah ini dalam file /views/blog.php
<?php
echo html::anchor('/blog/add_post/', 'Write a New Post');
echo '<h3>Recent Posts</h3><hr />';
foreach($posts as $post)
{

print form::open('/blog/view_post/', array('method'=>'post'));


echo '<h4>'.$post->title.'</h4>';
echo '<p>'.$post->text.'</p>';
print form::hidden('id', $post->id);
print form::submit('submit', 'View Post');
echo '<hr />';
print form::close();
}
?>
html::anchor adalah helper yang digunakan untuk menampilkan link ke
halaman lain.
Form juga merupakan helper.
Controller Class
Controller adalah penghubung antara model dengan view class. Agar view
index yang sudah dibuat di atas bisa ditampilkan, harus dibuat dulu controller
class-nya.
Simpan kode di bawah ini dalam file /controllers/blog.php
<?php
class Blog_Controller extends Controller
{
public function index()
{
$post = new Post_Model();
$view=new View('blog');
$posts=$post->retrieve_posts();
$view->posts=$posts;
$view->render(true);
}
}
?>
Sementara hanya ada satu method yaitu index(). Karena pada method ini akan
menggunakan method dari model class Post, maka buat dulu instance dari
class Post dengan kode berikut:
$post = new Post_Model();
Begitu juga method ini akan menggunakan instance dari View
$view=new View('blog');
blog adalah nama view yang akan ditampilkan (tanpa ekstensi filenya).
Dengan ini, maka jika kita buka http://localhost/kohanablog/index.php/blog/
akan muncul tampilan sebagai berikut:

Menghilangkan index.php
Melihat alamat di atas, kayaknya kurang indah kalo di tengah-tengahnya ada
index.php. Nah, mari kita hilangkan saha index.php-nya. Caranya mudah!
Halah.. Buat file .htaccess dan simpan di root folder kohanablog. Isi file

tersebut adalah sebagai berikut:


# Turn on URL rewriting
RewriteEngine On
# Installation directory
RewriteBase /kohanablog/
# Do not enable rewriting for other files that exist
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Rewrite all other URLs to index.php/URL
RewriteRule ^(.*)$ index.php/$1 [PT,L]
Nah, sekarang halaman di atas bisa diakses melalui
http://localhost/kohanablog/blog/
Dalam method index() di atas, ceritanya kita akan meminta semua post yang
ada di database kemudian diberikan pada instance view, yang akan
menampilkannya ke user. Flownya kira-kita seperti ini:
Model
Controller
View
User
Request
http://localhost/k
ohanablog/blog
Menentukan file mana yang
akan di-render
Memanggil fungsi retrieve_posts
Mengambil post
dari database,
return ke
controller
Inisiasi properti dari view dengan
(posts) dengan data dari model
Render view
Menampilkan view
blog.php

Add Post view class


Karena masih kosong, mari buat fungsi memasukkan post baru. Fungsi ini
nantinya akan dapat diakses oleh user dengan cara mengklik Write a New
Post dari view index.
Kita buat tampilannya dulu. Simpan kode di bawah ini dalam file
/views/add_post.php
<?php
echo '<h1>Add Post</h1>';
print form::open(NULL, array('method'=>'post'));
echo 'Title';
print form::input('title');
echo '<br>';
echo 'Write Post:<br>';
print form::textarea('text');
echo '<br>';

print form::submit('submit', 'Save');


print form::close();
?>
Lalu di controller tambahkan method berikut:
public function add_post()
{
$view=new View('add_post');
$post = new Post_Model();
$title=$this->input->post('title');
$text=$this->input->post('text');
if($title != NULL)
{
$data = array('title'=>$title,'text'=>$text);
$post->create_post($data);
url::redirect('/blog/index/');
}
$view->title = $title;
$view->text = $text;
$view->render(true);
}
Cek apakah berjalan baik atau tidak. Buka
http://localhost/kohanablog/blog/add_post
Tampilannya seperti ini:

Coba masukkan judul dan isi post. Misalnya...

Kalau sukses, kita akan kembali ke halaman index. Post yang baru tadi bisa
dilihat:

Di bawah setiap post ada tombol View Post. Jika diklik, kita akan masuk ke
halaman view_post yang memiliki menu hapus dan ubah post.
View Post view class
Simpan kode di bawah ini pada file /views/view_post.php
<?php
echo '<h1>'.$post->title.'</h1>';
echo $post->text;
print form::open('/blog/delete_post/', array('method'=>'post'));
print form::submit('submit', 'Delete');
print form::hidden('id', $post->id);
print form::close();
print form::open('/blog/update_post/', array('method'=>'post'));
print form::hidden('id', $post->id);
print form::submit('submit', 'Edit');
print form::close();
?>
Tambahkan method ini di controller:
public function view_post()
{
$view=new View('view_post');
$post = new Post_Model();
$post_id=$this->input->post('id');
$retrieved_post=$post->retrieve_post($post_id);
$view->post=$retrieved_post;
$view->render(true);
}
Cek tampilan ini dengan mengklik tombol View Post dari tampilan index di
atas.

Nah muncul post-nya kan beserta tombol Delete dan Edit.


Sekarang kita kerjakan fungsi ubah post. Start from the view...
Update Post view class
Simpan kode ini dalam /views/update_post.php
<?php
echo '<h1>Edit Post</h1>';
print form::open(NULL, array('method'=>'post'));
echo 'Title';
print form::input('title', $post->title);
echo '<br>';
echo 'Write Post:<br>';
print form::textarea('text', $post->text);
echo '<br>';
print form::hidden('id', $post->id);
print form::submit('submit', 'Save');
print form::close();
?>
Tambahkan kode ini ke dalam controller blog.php
public function update_post()
{
$view=new View('update_post');
$post = new Post_Model();
$post_id=$this->input->post('id');
$retrieved_post=$post->retrieve_post($post_id);
$view->post=$retrieved_post;
$title=$this->input->post('title');
$text=$this->input->post('text');
if($title != NULL)
{
$data = array('title'=>$title,'text'=>$text);
$post->update_post($post_id, $data);
url::redirect('/blog/index/');
}
$view->render(true);
}
Setelah diklik tombol Edit, seharusnya muncul tampilan seperti ini:

Coba ubah judul dan isi post-nya.

Klik tombol Save, kita akan kembali lagi ke index view.

Sekarang lanjutkan dengan fungsi terakhir: hapus!


Untuk fungsi ini tidak perlu membuat view class, cukup tambah method ini di
controller blog.php:
public function delete_post()
{
$view=new View('blog');
$post = new Post_Model();
$post_id=$this->input->post('id');
$post->delete_post($post_id);
echo 'you will delete a post with id number: '.$post_id;
url::redirect('/blog/index/');
}
Untuk menjalankannya, dari index view pilih post yang akan dihapus dengan

mengklik tombol View Post. Setelah muncul post-nya, klik tombol Delete,
dan sistem akan me-redirect ke index view.
And this tutorial is finish! (for now) ;)

Anda mungkin juga menyukai