Sinaryuda on CodeIgniter

Code Igniter is an Open Source Web Application Framework that makes writing kick-ass PHP programs simple as apple pie


Saturday, August 05, 2006

View

View

View adalah halaman web sederhana atau penggalan halaman seperti sebuah header, footer, sidebar, dan lain-lain. Pada kenyataannya, view dapat fleksibel di lekatkan dengan view lainnnya jika anda inginkan dengan tipe berurutan.

View tidak pernah dipanggil secara langsung, harus dipanggil oleh controller. Perlu diingat pada MVC framework, controller bertindak seperti polisi lalulintas, jadi bertindak untuk memperoleh sebuah keterangan-keterangan dari view.. jika anda tidak membaca bagian halaman controler anda diharapkan membacanya sebelum melanjutkan.

Menggunakan contoh controler yang anda buat dalam halaman controler. Mari kita tambahkan sebuah view.

Membuat sebuah view
Dengan menggunakan teks editor, buat sebuah file dengan nama blogview.php, dan isi dengan ini:

<html>
<head>
<title>My Blog</title>
</head>
<body>
<h1>Welcome to my Blog!</h1>
</body>
</html>

kemudian simpan file dalam folder application/views/

memanggil sebuah view
untuk memanggil sebagian file view anda akan menggunakan fungsi seperti berikut:

$this->load->view(‘nama’)

dimana nama adalah nama file view anda, tanpa ekstensi .php
sekarang, buka file controler yang telah anda buat sejak awal blog.php, dan ganti echo statemen dengan fungsi pemanggil view :

<?php
class Blog extends Controller {

function index()
{
$this->load->view('blogview');
}
}
?>

jika anda membuka website anda dengan Url anda seharusnya melihat view anda yang baru. Url mirip dengan ini:

www.your-site.com/index.php/blog/

menambahkan Data dinamis ke dalam view

data dilewatkan dari controler ke view dengan cara dari sebuah array atau sebuah object dalam parameter kedua dari fugsi pemanggil view. Disini ada sebuah contoh menggunakan sebuah array:

$data = array(
‘title’ => ‘My Title’,
‘heading’ => ‘My Heading’,
‘message’ => ‘My Message’
);
$this->load->view(‘blogview’,$data);

dan dalam contoh menggunakan sebuah object:

$data = new Someclass();
$this->load->view(‘blogview’,$data);

catatan : jika anda menggunakan sebuah object, variabel class akan dikembalikan kedalam eleman aray.

Mari kita coba dengan file controler anda, buka dan tmbahkan code berikut:
<?php
class Blog extends Controller {

function index()
{
$data['title'] = "My Real Title";
$data['heading'] = "My Real Heading";

$this->load->view('blogview', $data);
}
}
?>

sekarang buka file view anda dan ubah teks ke variabel yang berhubungan dengan kunci array dalam data anda:

<html>
<head>
<title><?=$title;?></title>
</head>
<body>
<h1><?=$heading;?></h1>
</body>
</html>

kemudian panggil halaman pada URL yang anda gunakan dan anda seharusnya melihat variable berganti.

Catatan: anda akan diperingatkan dalam contoh diatas kita menggunakan syntax alternatif PHP. Jika anda tidak familiar dengan ini anda dapat membaca pada syntax alternatif PHP nanti.

Membuat Perulangan
Data array yang dilewatkan ke view tidak terbatas untuk variabel sederhana. Anda dapat melewatkan multidimensi array, yang mana dapat di ulang untuk menghasilkan baris yang banyak. Sebagai contoh, jika anda mengambil data dari database ini biasanya dalam form dari sebuah array multidimensi.

Disini sebuah contoh sederhana. Tambahakan ini kedalam controler:

<?php
class Blog extends Controller {

function index()
{
$data['todo_list'] = array('Clean House', 'Call Mom', 'Run Errands');

$data['title'] = "My Real Title";
$data['heading'] = "My Real Heading";

$this->load->view('blogview', $data);
}
}
?>

sekarang buka file view dan buat perulangan:

<html>
<head>
<title><?=$title;?></title>
</head>
<body>
<h1><?=$heading;?></h1>

<h3>My Todo List</h3>

<ul>
<?php foreach($todo_list as $item):?>

<li><?=$item;?></li>

<?php endforeach;?>
</ul>


</body>
</html>


Controllers

controller adalah jantung dari aplikasi anda, sebagaimana menentukan bagaimana HTTP requests akan di tangani.

Apa itu sebuah Controller?

sebuah controller adalah sebuah file class sederhana yang dinamain dalam suatu cara yang mana dapat menghubungkan dengan sebuah URI.

mempertimbangkan URI ini:

www.your-site.com/index.php/blog/
dalam contoh diatas, Code igniter akan mencoba untuk menemukan sebuah controller dengan nama blog.php dan menampilkannya.

ketika sebuah nama controller sesuai segment pertama dari sebuah URI, akan ditampilkan

Mari Mencobanya: Hello World!

mari mencoba sebuah controller sederhana sehingga anda dapat melihat dalam tidakan/aksi. gunakan teks editor, buat sebuah filer dengan nama blog.php, dan tulis code seperti berikut ini:

<?php
class Blog extends Controller {

function index()
{
echo 'Hello World!';
}
}
?>

kemudian simpan file ke folder application/controller/ anda.
sekarang lihat site anda dengan sebuah URL yang sesuai seperti ini:

www.your-site.com/index.php/blog/

jika anda melakukan kesalahan, anda akan melihat Hello World!.

catatan : nama Class harus diawali dengan sebuah Huruf besar. dengan huruf lain, valid:

<?php
class Blog extends Controller {

}
?>
ini tidak valid

<?php
class blog extends Controller {

}
?>
juga, selalu memastikan controller anda Extends class induk controller sehingga dapat menurunkan semua fungsi.

Function

dalam contoh diatas nama fungsi adalah index(). fungsi "index" selalu di muat secara umum jika segment kedua dari URI kosong. cara lainnya untuk menampilkan pesan "Hello Wolrd" anda akan seperti ini:

www.your-site.com/index.php/blog/index/
segmen kedua dari URI menjabarkan yang mana fungsi dalam controller menerima panggilan.

mari dicoba. tambahkan fungsi baru pada controller anda:

<?php
class Blog extends Controller {

function index()
{
echo 'Hello World!';
}

function comments()
{
echo 'Look at this!';
}
}
?>

sekarang muat URL berikut untuk melihat fungsi comment :

www.your-site.com/index.php/blog/comments/

Anda seharusnya melihat pesan anda

Private Funsgsi

dalam beberapa kasus anda tidak menginginkan beberapa fungsi diakses secara public. untuk membuat fungsi private, tinggal tambahkan sebuah underscore sebagai awalan dan ini tidak akan dilayani melalui permintaan URL. sebagai contoh, jika dimana memiliki fungsi seperti ini:

function _utility()
{
// some code
}

cobalah untuk mengaksesnya melalui URL, seperti ini, tidak akan bekerja :

www.your-site.com/index.php/blog/_utility/

Definisi sebuah Controller default

Code Igniter dapat memberitahu untuk memuat controller umum ketika sebuah URL tidak muncul, seperti akan memanggil ketika hanya root URL site anda yang diminta. untuk sebuah controller spesifik, buka file application/config/routes.php dan set variabel ini :

$route['default_controller'] = 'Blog';
dimana Blog adalah nama dari class controller yang anda ingin gunakan. jika anda sekaran memuat file index.php anda tanpa segmen URI spesifik anda akan melihat pesan Hello World anda secara umum.

Class Contructors

jika anda bermaksud untuk menggunakan sebuah contructor dalam beberapa dari controller anda, anda HARUS menaruh baris kode seperti dibawah ini :

parent::Controller();

Alasan baris ini adalah kebutuhan karena contructor local anda akan mengesampingkan salah satu dalam parent class controler jadi kita memerlukan secara manual untuk memangilnya.

jika anda tidak familiar dengan contuctor, dalam PHP4, sebuah contructor sebuah fungsi sederhana yang memiliki nama sama dengan nama class:

<?php
class Blog extends Controller {

function Blog()
{
parent::Controller();
}
}
?>

dalam PHP5, contructore menggunakan syntax seperti berikut:

<?php
class Blog extends Controller {

function __construct()
{
parent::Controller();
}
}
?>

Contructor berguna jika anda membutuhkan untuk set beberapa nilai default, atau menjalankan proses default ketika class anda ter instant
contructor tidak dapat engembalikan sebuah nilai, tetapi dapat melakukan beberapa pekerjaan default.


Wednesday, August 02, 2006

Mengaktifkan Query Strings

Pada kasus-kasus tertentu mungkin memerlukan penggunaan query string URL seperti berikut:

index.php?c=products&m=view&id=345

Code Igniter memberikan pilihan dukungan seperti ini, yang mana dapat di aktifkan di dalam file application/config.php. Anda akan menumukan baris kode seperti berikut:

$config['enable_query_strings'] = FALSE;
$config['controller_trigger'] = 'c';
$config['function_trigger'] = 'm';

jika ingin mengganti/ mengaktifkan Query String maka ubah pada "enable_query_string" menjadi TRUE maka fitur ini akan menjadi aktif. Pada controller dan fungsi akan berfungsi sebagai "trigger" atau pemicu kata-kata yang telah diset untuk meminta kepada kontroller dan method:

index.php?c=controller&m=method


Menambahkan Akhiran pada URL

dalam file <b>application/config.php</b> di code igniter dapat anda berikan akhiran yang akan ditambahkan kesemua URL yang digenerate oleh CodeIgniter. sebagai contoh jika URL seperti ini:

www.site_anda.com/index.php/products/view/shoes

Anda dapat membeikan akhiran seperti .html, membuat halaman terlihat menjadi tipe tertentu:

www.site_anda.com/index.php/producs/view/shoes.html


Untuk mendapatkan URL seperti diatas ialah dengan menambahkan akhiran pada URL suffix di dalam file application/config.php


$config['url_suffix'] = ".html";

anda dapat memberikan akhiran sesuai dengan keinginan Anda


Tuesday, August 01, 2006

Menghilangkan file index.php

pada codeigniter secara default selalu mengikutkan index.php dalam url, seperti pada contoh berikut:

www.site+anda.com/index.php/news/article/my_article


index.php tersebut dapat dihapus dengan menggunakan .htaccess dengan beberapa aturan sederhana. dengan menggunkan metode "negative" dalam setiap redirect kecuali item tertentu:

RewriteEngine on
RewriteCond $1 !^(index\.php|images|sitemap\.xml|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]


pada contoh diatas, beberapa HTTP request lainnya selain untuk index.php, images, sitemap.xml, dan robot.txt diperlakukan seperti sebuah request untuk file index.php

mungkin hanya dapat digunakan jika menggunkan web server apache saja :D