Anda di halaman 1dari 20

Selamat datang di CodeIgniter

CodeIgniter adalah sebuah Application Development Framework (toolkit) bagi orang-orang yang
ingin membangun website menggunakan PHP. Tujuannya adalah untuk memungkinkan Anda
mengembangkan proyek-proyek lebih cepat daripada Anda menulis kode dari awal, tersedia
banyak libary untuk tugas-tugas yang biasa diperlukan, serta antarmuka dan struktur logis yang
sederhana untuk mengakses library ini. CodeIgniter memungkinkan Anda fokus pada proyek
Anda dengan meminimalkan jumlah kode yang dibutuhkan untuk tugas yang diberikan.

Untuk siapakah Codeigniter


CodeIgniter tepat untuk Anda jika:

Anda ingin framework dengan small footprint (Ukuran aplikasi yang kecil).

Anda membutuhkan kinerja yang luar biasa.

Anda perlu kompatibilitas yang luas untuk hosting standar yang berjalan di berbagai versi
PHP dan konfigurasi yang berbeda-beda.

Anda ingin sebuah framework yang hampir tidak membutuhkan konfigurasi.

Anda ingin sebuah framework yang tidak mengharuskan Anda untuk menggunakan
command line (CLI).

Anda ingin sebuah framework yang tidak mengharuskan Anda untuk mematuhi aturan
ketat dalam koding.

Anda tidak tertarik pada library monolitik skala besar seperti PEAR.

Anda tidak ingin dipaksa untuk belajar bahasa templating (meskipun parser template
lainnya tersedia jika Anda menginginkannya).

Anda menghindari kompleksitas, mendukung solusi yang sederhana.

Anda perlu dokumentasi yang jelas dan menyeluruh.

Downloading CodeIgniter

CodeIgniter v3.0.3-dev (Current version)

CodeIgniter v3.0.2
CodeIgniter v3.0.1

CodeIgniter v3.0.0

CodeIgniter v2.2.5

CodeIgniter v2.2.4

CodeIgniter v2.2.3

CodeIgniter v2.2.2

CodeIgniter v2.2.1

CodeIgniter v2.2.0

CodeIgniter v2.1.4

CodeIgniter v2.1.3

CodeIgniter v2.1.2

CodeIgniter v2.1.1

CodeIgniter v2.1.0

GitHub

Git adalah sebuah version control system (VCS) yang didistribusikan.

Akses publik Git tersedia di GitHub. Harap dicatat bahwa setiap usaha dilakukan untuk menjaga
basis kode ini fungsional, kami tidak dapat menjamin fungsionalitas kode yang diambil dari
branch yang sedang dikembangkan.

Dimulai dengan versi 2.0.3, versi stabil juga tersedia di GitHub Pers.

Panduan Instalasi
CodeIgniter diinstal dalam empat langkah:

1. Unzip paket.

2. Upload folder CodeIgniter dan file ke server Anda. Biasanya file index.php berada di
root folder Anda.
3. Buka application/config/config.php dengan teks editor dan atur URL dasar Anda.
Jika Anda berniat untuk menggunakan encryption atau session, atur encryption key Anda.

4. Jika Anda berniat untuk menggunakan database, buka file


application/config/database.php dengan teks editor dan atur konfigurasi database
Anda.

Jika Anda ingin meningkatkan keamanan aplikasi Anda dengan menyembunyikan lokasi file
CodeIgniter Anda, Anda dapat mengubah nama sistem dan folder aplikasi menjadi sesuatu yang
lebih pribadi. Jika Anda ingin mengubah namanya, Anda harus membuka file index.php di root
folder dan mengatur variabel $system_path dan variabel $application_folder dengan nama
baru yang Anda sukai.

Untuk keamanan yang terbaik, baik sistem dan folder aplikasi harus ditempatkan di atas web
root sehingga mereka tidak langsung dapat diakses melalui browser. Secara default, file .htaccess
telah disertakan dalam setiap folder untuk membantu mencegah akses langsung, tapi yang
terbaik adalah dengan menghapus mereka dari akses publik sepenuhnya dalam hal perubahan
konfigurasi web server atau tidak mematuhi .htaccess.

Jika Anda ingin views Anda dapat diakses secara publik, Anda dapat memindahkan folder views
dari folder aplikasi Anda.

Setelah memindah folder views Anda, buka file index.php utama Anda dan atur variable
$system_path, $application_folder dan $view_folder, sebaiknya dengan path lengkap,
misalnya '/www/MyUser/system'.

Satu tambahan untuk lingkungan produksi adalah dengan menonaktifkan PHP error reporting
dan setiap fungsi development-only lainnya. Di CodeIgniter, ini dapat dilakukan dengan
menetapkan konstan ENVIRONMENT, yang lebih lengkap dijelaskan di halaman Keamanan.

Thats it!

Jika Anda baru untuk CodeIgniter, silakan baca bagian Memulai dengan Codeigniter dari
Panduan Pengguna untuk mulai belajar bagaimana membangun aplikasi PHP yang dinamis.
Selamat menikmati!

Penyelesaian Masalah
Jika Anda menemukan bahwa tidak peduli apa yang Anda masukkan ke dalam URL Anda hanya
default halaman Anda yang sedang di load, mungkin server Anda tidak mendukung variabel
REQUEST_URI yang dibutuhkan untuk melayani URL search-engine friendly. Sebagai langkah
pertama, buka file application/config/config.php Anda dan cari informasi URI Protocol.
Ini akan menyarankan Anda mencoba beberapa pengaturan alternatif. Jika masih tidak bekerja
setelah Anda sudah mencoba ini, Anda harus memaksa CodeIgniter untuk menambahkan tanda
tanya ke URL Anda. Untuk melakukan hal ini, buka file application/config/config.php Anda
dan ubah bagian ini:

$config['index_page'] = "index.php";

Menjadi ini:

$config['index_page'] = "index.php?";
Ikhtisar CodeIgniter

Halaman-halaman berikut menggambarkan konsep luas CodeIgniter:

Memulai dengan CodeIgniter

Sekilas Tentang CodeIgniter

Fitur yang Didukung

Alur Aplikasi

Model-View-Controller

Desain and Sasaran Arsitektur

Memulai dengan CodeIgniter

Aplikasi perangkat lunak memerlukan beberapa proses untuk belajar. Kami telah memberikan
usaha terbaik kami untuk meminimalkan proses belajar dan membuat proses belajar menjadi
menyenangkan.

Langkah pertama adalah menginstall CodeIgniter, kemudian membaca semua topik dalam
Pendahuluan bagian dari Daftar Isi.

Berikutnya, membaca setiap halaman-halaman di dalam Topik Umum secara urut. Setiap topik
dibuat berdasarkan topik sebelumnya, dan termasuk contoh kode yang dianjurkan untuk Anda
coba.

Setelah Anda memahami dasar-dasar Codeigniter, Anda akan siap untuk menjelajahi halaman
Class Reference dan halaman Helper Reference untuk belajar memanfaatkan file library dan
helper.

Jangan ragu untuk mengunjungi Community Forum jika Anda memiliki pertanyaan atau
masalah, dan Wiki kami untuk melihat contoh kode yang diposting oleh pengguna lain.

Sekilas Tentang CodeIgniter


CodeIgniter itu Sebuah Aplikasi Framework
CodeIgniter adalah sebuah Application Development Framework (toolkit) bagi orang-orang yang
ingin membangun website menggunakan PHP. Tujuannya adalah untuk memungkinkan Anda
mengembangkan proyek-proyek lebih cepat daripada Anda menulis kode dari awal, tersedia
banyak libary untuk tugas-tugas yang biasa diperlukan, serta antarmuka dan struktur logis yang
sederhana untuk mengakses library ini. CodeIgniter memungkinkan Anda fokus pada proyek
Anda dengan meminimalkan jumlah kode yang dibutuhkan untuk tugas yang diberikan.

CodeIgniter itu Gratis

CodeIgniter dilisensikan di bawah lisensi MIT sehingga Anda dapat menggunakannya sesuka
hati Anda. Untuk informasi lebih lanjut silahkan baca license agreement.

CodeIgniter itu Ringan

Benar-benar ringan. Sistem inti hanya memerlukan beberapa library yang sangat kecil. Hal ini
kontras dengan banyak framework yang membutuhkan lebih banyak sumber daya secara
signifikan. Library tambahan dimuat secara dinamis atau sesuai permintaan, berdasarkan
kebutuhan Anda untuk proses tertentu, sehingga sistem dasar sangat ramping dan cukup cepat.

CodeIgniter itu Cepat

Sangat cepat. Kami menantang Anda untuk menemukan framework yang memiliki kinerja lebih
baik dari CodeIgniter.

CodeIgniter Menggunakan M-V-C

CodeIgniter menggunakan pendekatan Model-View-Controller, yang memungkinkan pemisahan


antara logika dan presentasi. Ini sangat baik untuk proyek yang dimana desainer bekerja dengan
file template Anda, sehingga kode di file ini menjadi minimal. Kami menjelaskan MVC lebih
detail pada halamannya sendiri.

CodeIgniter Menghasilkan URL yang Bersih

URL yang dihasilkan oleh CodeIgniter bersih dan search-engine friendly. Daripada
menggunakan standar query string pendekatan ke URL yang identik dengan sistem dinamis,
CodeIgniter menggunakan pendekatan segment-based:

example.com/news/article/345
Catatan: Secara default file index.php disertakan dalam URL tetapi bisa dihapus menggunakan
file .htaccess yang sederhana.

CodeIgniter Packs a Punch

CodeIgniter dilengkapi dengan library yang lengkap yang umumnya paling diperlukan untuk
tugas pengembangan web, seperti mengakses database, mengirim email, memvalidasi data form,
menjaga session, memanipulasi gambar, bekerja dengan XML-RPC data dan masih banyak lagi.
CodeIgniter itu Extensible

Sistem ini dapat dengan mudah diperluas dengan menggunakan library Anda sendiri, helper,
atau melalui class extensions atau system hooks.

CodeIgniter Tidak Membutuhkan Template Engine

Meskipun CodeIgniter mempunyai template parser sederhana yang bisa digunakan secara
opsional, ia tidak memaksa Anda untuk menggunakannya. Template engine tidak bisa menyamai
kinerja native PHP, dan sintaks yang harus dipelajari untuk menggunakan template engine
biasanya hanya sedikit lebih mudah daripada belajar dasar-dasar PHP. Pertimbangkan blok kode
PHP berikut:

<ul>
<?php foreach ($addressbook as $name):?>
<li><?=$name?></li>
<?php endforeach; ?>
</ul>
Kontras ini dengan pseudo-code yang digunakan oleh template engine:

<ul>
{foreach from=$addressbook item="name"}
<li>{$name}</li>
{/foreach}
</ul>
Ya, contoh template engine diatas sedikit lebih bersih, tapi harus ditukar dengan performa,
karena pseudo-code harus diubah kembali ke PHP untuk dijalankan. Karena salah satu tujuan
kami adalah performa maksimal, kami memilih untuk tidak memerlukan penggunaan template
engine.

CodeIgniter didokumentasikan Secara Menyeluruh

Programmer suka kode dan membenci menulis dokumentasi. Kami tidak berbeda, tentu saja, tapi
karena dokumentasi sama pentingnya sebagai kode itu sendiri, maka kami berkomitmen untuk
melakukannya. Source code kami sangat bersih dan mempunyai komentar yang baik juga.

CodeIgniter memiliki Komunitas Pengguna yang Ramah

Komunitas pengguna yang berkembang dapat dilihat secara aktif yang berpartisipasi dalam
Community Forums kami.

Keunggulan CodeIgniter

Fitur dalam dan dari diri mereka sendiri adalah cara yang sangat buruk untuk menilai sebuah
aplikasi karena mereka belum memberitahu Anda apa-apa tentang pengalaman pengguna, atau
bagaimana itu dirancang secara cerdas atau intuitif. Fitur tidak mengungkapkan apa-apa tentang
kualitas kode, atau kinerja, atau perhatian terhadap detail, atau penerapan keamanan. Satu-
satunya cara untuk benar-benar menilai sebuah aplikasi adalah dengan mencobanya dan
mengenal kodenya. Instalasi CodeIgniter sangat mudah, oleh karena itu kami mendorong Anda
untuk melakukan hal itu. Sementara itu, ini adalah daftar fitur utama CodeIgniter.

Sistem berbasis MVC

Sangat ringan

Database Class yang lengkap dengan dukungan untuk beberapa platform.

Dukungan query builder untuk database

Form dan validasi data

Keamanan dan penyaringan XSS

Manajemen sessions

Email Sending Class. Mendukung lampiran, HTML/Text email, beberapa


protokol (sendmail, SMTP, dan Mail) dan banyak lagi.

Image Manipulation Library (cropping, mengubah ukuran, memutar, dll).


Mendukung GD, ImageMagick, dan Netpbm

File Uploading Class

FTP Class

Localization

Pagination

Enkripsi data

Benchmarking

Full Page Caching

Error Logging

Application Profiling

Calendaring Class

User Agent Class

Zip Encoding Class


Template Engine Class

Trackback Class

XML-RPC Library

Unit Testing Class

Search-engine Friendly URLs

Flexible URI Routing

Dukungan untuk Hooks dan Class Extensions

Kumpulan library fungsi-fungsi helper yang besar

Alur Aplikasi

Grafik berikut menggambarkan bagaimana alur data melewati sistem:

1. File index.php berfungsi sebagai front controller, menginisialisasi resource


utama yang dibutuhkan untuk menjalankan CodeIgniter.

2. Router memeriksa HTTP request untuk menentukan apa yang harus


dilakukan dengan itu.

3. Jika file cache ada, dikirim langsung ke browser, melewati eksekusi sistem
normal.

4. Keamanan. Sebelum controller aplikasi dimuat, HTTP request dan setiap data
pengguna yang di submit disaring terlebih dahulu untuk keamanan.

5. Controller memuat model, library utama, helper, dan setiap resource lainnya
yang diperlukan untuk memproses permintaan khusus.
6. View di render kemudian dikirim ke web browser agar dapat dilihat. Jika
caching diaktifkan, view di cache terlebih dahulu sehingga pada permintaan
berikutnya dapat dilayani.

Model-View-Controller

CodeIgniter didasarkan pada pola pengembangan Model-View-Controller. MVC adalah


pendekatan perangkat lunak yang memisahkan logika aplikasi dari presentasi. Dalam prakteknya,
itu memungkinkan halaman web Anda memiliki scripting yang minimal karena presentasi
terpisah dari scripting PHP.

Model mewakili struktur data Anda. Biasanya class model Anda akan berisi
fungsi yang membantu Anda mengambil, menyimpan, dan memperbarui
informasi dalam database Anda.

View adalah informasi yang disajikan kepada pengguna. View yang biasanya
akan menjadi halaman web, tetapi dalam CodeIgniter, view juga bisa menjadi
bagian dari sebuah halaman seperti header atau footer. Hal ini juga dapat
menjadi halaman RSS, atau jenis-jenis lain dari halaman.

Controller berfungsi sebagai perantara antara Model, View, dan resource


lain yang diperlukan untuk memproses HTTP request dan menghasilkan
halaman web.

CodeIgniter memiliki pendekatan yang cukup longgar untuk MVC karena Model tidak selalu
diperlukan. Jika Anda tidak perlu menambahkan pemisahan, atau menemukan bahwa
mempertahankan sebuah model memerlukan kompleksitas lebih dari yang Anda inginkan, Anda
bisa mengabaikan mereka dan membangun aplikasi Anda dengan minimal menggunakan
Controller dan View. CodeIgniter juga memungkinkan Anda untuk memasukkan script Anda
sendiri, atau bahkan mengembangkan library inti untuk sistem, memungkinkan Anda untuk
bekerja dengan cara yang paling masuk akal bagi Anda.

Desain and Sasaran Arsitektur

Tujuan kami untuk CodeIgniter adalah kinerja yang maksimum, kemampuan, dan fleksibilitas
dalam hal terkecil, package seringan mungkin.

Untuk memenuhi tujuan ini kami berkomitmen untuk melakukan benchmarking, re-factoring,
dan menyederhanakan setiap langkah dari proses pembangunanan, menolak semua yang tidak
menjadi tujuan berikutnya.

Dari sudut pandang teknis dan arsitektur, CodeIgniter diciptakan dengan tujuan sebagai berikut:

Dynamic Instantiation. Dalam CodeIgniter, komponen dimuat dan rutinitas


dieksekusi hanya jika diminta, bukan secara global. Tidak ada asumsi yang
dibuat oleh sistem tentang apa yang mungkin diperlukan di luar resource
utama minimal, sehingga sistem ini sangat ringan secara default. Event, yang
dipicu oleh HTTP request, dan controller dan view yang Anda rancang akan
menentukan apa yang dipanggil.

Loose Coupling. Coupling adalah sejauh mana komponen-komponen dari


sistem mengandalkan satu sama lain. Semakin sedikit komponen yang
bergantung satu sama lain, maka komponen tersebut lebih dapat digunakan
kembali dan sistem menjadi fleksibel. Tujuan kami adalah sistem yang sangat
longgar (very loosely coupled system).

Component Singularity. Singularity adalah sejauh mana komponen


memiliki tujuan yang difokuskan secara sempit. Dalam CodeIgniter, setiap
class dan fungsinya sangat otonom supaya memungkinkan kegunaan yang
maksimal.

CodeIgniter itu dynamically instantiated, sistem yang loosely coupled dengan singularitas
komponen yang tinggi. Codeigniter berusaha untuk sederhana, fleksible, dan kinerja tinggi dalam
paket dengan footprint yang kecil.

Tutorial

Tutorial ini ditujukan untuk memperkenalkan Anda framework CodeIgniter dan prinsip-prinsip
dasar arsitektur MVC. Tutorial ini akan menunjukkan Anda bagaimana aplikasi CodeIgniter
dasar dibangun dalam langkah demi langkah.

Dalam tutorial ini, Anda akan membuat aplikasi berita dasar (basic news application). Anda
akan mulai dengan menulis kode yang dapat memuat halaman statis. Berikutnya, Anda akan
membuat bagian berita yang membaca berita dari database. Akhirnya, Anda akan menambahkan
form untuk membuat berita dalam database.

Tutorial ini akan difokuskan pada:

Dasar-dasar MVC

Dasar-dasar routing

Validasi form

Melakukan query database dasar menggunakan Query Builder

Seluruh tutorial ini dibagi atas beberapa halaman, masing-masing menjelaskan suatu sebagian
kecil dari fungsi framework CodeIgniter. Anda akan melalui halaman-halaman berikut:

Pendahuluan, halaman ini, yang memberi Anda gambaran tentang apa yang
harus diharapkan.

Halaman statis, yang akan mengajarkan Anda dasar-dasar controller, view


dan routing.
Bagian Berita, di mana Anda akan mulai menggunakan model dan akan
melakukan beberapa operasi database dasar.

Buat berita, yang akan memperkenalkan lebih lanjut tentang operasi


database dan validasi form.

Kesimpulan, yang akan memberi Anda beberapa petunjuk tentang bacaan


lebih lanjut dan sumber lainnya.

Nikmati perjalanan Anda dengan framework CodeIgniter.

Halaman Statis
Catatan: Tutorial ini mengasumsikan Anda sudah download CodeIgniter dan telah terinstall di
development environment Anda.

Hal pertama yang akan Anda lakukan adalah membuat controller untuk menangani halaman
statis. Sebuah controller hanyalah sebuah class yang membantu delegasi pekerjaan. Ini adalah
perekat aplikasi web Anda.

Sebagai contoh, ketika panggilan dilakukan ke:

http://example.com/news/latest/10

Kita dapat membayangkan bahwa ada controller bernama news. Method yang dipanggil dalam
controller news adalah latest. Pekerjaan method latest pada controller news ini bisa
untuk mengambil 10 item berita, dan memuat mereka ke halaman. Sangat sering di MVC, Anda
akan melihat pola URL seperti:

http://example.com/[controller-class]/[controller-method]/[arguments]

Saat skema URL menjadi lebih komples, hal ini dapat berubah. Tapi untuk saat ini, skema ini
yang kita perlu tahu.

Buat file pada application/controllers/Pages.php dengan kode seperti ini.

<?php

class Pages extends CI_Controller


{

public function view($page = 'home')


{

}
Anda telah membuat sebuah class bernama Pages, dengan method bernama view yang menerima
satu argumen bernama $page. Class Pages memperpanjang class CI_Controller. Ini berarti
bahwa class Pages dapat mengakses metode dan variabel yang didefinisikan dalam class
CI_Controller (system/core/Controller.php).

Controller adalah apa yang akan menjadi pusat untuk setiap permintaan di aplikasi web Anda.
Dalam diskusi CodeIgniter yang sangat teknis, hal itu mungkin disebut sebagai super object.
Seperti class php, Anda lihat itu dalam controller Anda sebagai $this. Mengacu kepada $this
adalah bagaimana Anda akan memuat library, view, dan memerintah framework secara
keseluruhan.

Sekarang Anda telah membuat method pertama Anda, saatnya untuk membuat template beberapa
halaman dasar. Kita akan membuat dua view (template halaman) yang bertindak sebagai footer
dan header halaman kita.

Buat header di application/views/templates/header.php dan tambahkan kode berikut:

<html>
<head>
<title>CodeIgniter Tutorial</title>
</head>
<body>
<h1><?php echo $title; ?></h1>

Header berisi kode HTML dasar yang akan Anda ingin tampilkan sebelum memuat view utama,
bersama-sama dengan heading. Ini juga akan menampilkan variabel $title, yang akan kita
tentukan kemudian di controller. Sekarang, buat footer di application/views/templates/footer.php
yang berisi kode berikut:

<em>&copy; 2015</em>
</body>
</html>

Menambahkan logika ke dalam controller


Sebelumnya Anda mengatur controller dengan method view(). Method ini menerima satu
parameter, yang merupakan nama dari halaman yang akan dimuat. Template halaman statis akan
ditempatkan di direktori application/views/pages/.

Dalam direktori tersebut, buat dua file bernama home.php dan about.php. Dalam file-file
tersebut, ketik beberapa teks - apapun yang Anda inginkan - dan simpan mereka. Jika Anda ingin
menjadi sangat un-original, coba Hello World!.

Untuk memuat halaman tersebut, Anda harus memeriksa apakah halaman yang diminta benar-
benar ada:

public function view($page = 'home')


{
if ( ! file_exists(APPPATH.'/views/pages/'.$page.'.php')) {
// Whoops, we don't have a page for that!
show_404();
}

$data['title'] = ucfirst($page); // Capitalize the first letter

$this->load->view('templates/header', $data);
$this->load->view('pages/'.$page, $data);
$this->load->view('templates/footer', $data);
}

Sekarang, ketika halaman tidak ada, itu dimuat, termasuk header dan footer, dan ditampilkan
kepada pengguna. Jika halaman tidak ada, halaman 404 Page not found akan ditampilkan.

Baris pertama dalam method ini memeriksa apakah halaman benar-benar ada. Fungsi asli PHP
file_exists() digunakan untuk memeriksa apakah file tersebut ada. show_404() adalah fungsi
built-in CodeIgniter yang merender halaman default error.

Dalam template header, variabel $title digunakan untukmenyesuaikan judul halaman. Nilai $title
didefinisikan dalam method ini, tapi bukannya assign nilai ke variabel, itu assign untuk elemen
title di array $data.

Hal terakhir yang harus dilakukan adalah memuat view sesuai dengan yang seharusnya
ditampilkan. Parameter kedua dalam method view() digunakan untuk mengoper (pass) nilai-nilai
ke view. Setiap nilai dalam array $data di assign ke variabel yang sesuai dengan key dari array
$data. Jadi nilai $data['title'] di controller setara dengan $title dalam view.

Routing
Controller sekarang berfungsi! Arahkan browser Anda ke [your-site-url]/index.php/pages/view
untuk melihat halaman Anda. Ketika Anda mengunjungi index.php/pages/view/about Anda akan
melihat halaman about, termasuk header dan footer.

Menggunakan rule routing kustom, Anda memiliki kekuatan untuk memetakan setiap URI ke
controller apapun dan method, dan bebas dari konvensi yang normal: http://example.com/
[controller-class]/[controller-method]/[arguments]

Mari kita melakukan itu. Buka file routing yang terletak di application/config/routes.php dan
tambahkan dua baris berikut. Hapus semua kode lain yang mengatur setiap elemen di array
$route.

$route['default_controller'] = 'pages/view';
$route['(:any)'] = 'pages/view/$1';

CodeIgniter membaca rule routing dari atas ke bawah dan mengarahkan request ke rule pertama
yang cocok. Setiap rule adalah regular expression (sisi kiri) dipetakan ke controller dan nama
method dipisahkan oleh garis miring (sisi kanan). Ketika permintaan datang, CodeIgniter
mencari rule yang cocok pertama kali, dan memanggil controller dan method yang sesuai,
memungkinkan dengan argumen.

Informasi lebih lanjut tentang routing dapat ditemukan dalam dokumentasi URI Routing.

Di sini, aturan kedua dalam array $routes cocok dengan semua request dengan menggunakan
wildcard string (:any) dan mengoper (pass) parameter ke method view() di class Pages.

Sekarang kunjungi index.php/about. Apakah itu disalurkan dengan benar ke method view() di
controller Pages? Bagus!

Bagian Berita

Pada bagian terakhir, kita mempelajari beberapa konsep dasar dari framework dengan menulis
sebuah class yang meliputi halaman statis. Kita membersihkan URI dengan menambahkan rule
routing kustom. Sekarang saatnya untuk mengenal konten dinamis dan mulai menggunakan
database.

Menyiapkan Model Anda

Alih-alih menulis operasi database di controller, query seharusnya ditempatkan dalam model,
sehingga mereka dapat dengan mudah digunakan kembali nanti. Model adalah tempat di mana
Anda mengambil, menambahkan, dan memperbarui informasi Anda di database atau menyimpan
data lainnya. Mereka mewakili data Anda.

Buka direktori application/models/ dan buat file baru yang bernama News_model.php dan
tambahkan kode berikut. Pastikan Anda sudah menkonfigurasi database Anda dengan benar
seperti yang dijelaskan disini.

<?php
class News_model extends CI_Model
{

public function __construct()


{
$this->load->database();
}
}
Kode ini terlihat mirip dengan kode controller yang digunakan sebelumnya. Kode diatas
menciptakan model baru dengan memperluas CI_Model dan memuat library database. Ini akan
membuat class database yang tersedia melalui objek $this->db.

Sebelum melakukan query ke database, skema database harus dibuat terlebih dahulu.
Hubungkan ke database Anda dan jalankan perintah SQL di bawah ini (MySQL). Yang juga
akan menambahkan beberapa record.

CREATE TABLE news (


id int(11) NOT NULL AUTO_INCREMENT,
title varchar(128) NOT NULL,
slug varchar(128) NOT NULL,
text text NOT NULL,
PRIMARY KEY (id),
KEY slug (slug)
);
Sekarang database dan model telah diatur, Anda akan memerlukan method untuk mendapatkan
semua posting kita dari database. Untuk melakukan hal ini, database abstraction layer yang
disertakan dengan CodeIgniter - Query Builder - digunakan. Hal ini memungkinkan Anda untuk
menulis query sekali dan membuat mereka bekerja pada semua sistem database didukung.
Tambahkan kode berikut untuk model Anda.

public function get_news($slug = FALSE)


{
if ($slug === FALSE) {
$query = $this->db->get('news');
return $query->result_array();
}

$query = $this->db->get_where('news', array('slug' => $slug));


return $query->row_array();
}
Dengan kode ini Anda dapat melakukan dua query yang berbeda. Anda bisa mendapatkan semua
record berita, atau mendapatkan sebuah berita dengan slug. Anda mungkin melihat bahwa
variabel $slug tidak dibersihkan sebelum menjalankan query. Query Builder melakukannya
untuk anda.

Menampilkan Berita

Sekarang query sudah ditulis, model harus terikat dengan view yang akan menampilkan berita
kepada pengguna. Hal ini dapat dilakukan di controller Pages yang kita buat sebelumnya, tapi
demi kejelasan, controller News baru telah didefinisikan. Buat controller baru di
application/controllers/News.php.

<?php
class News extends CI_Controller
{

public function __construct()


{
parent::__construct();
$this->load->model('news_model');
$this->load->helper('url_helper');
}

public function index()


{
$data['news'] = $this->news_model->get_news();
}

public function view($slug = NULL)


{
$data['news_item'] = $this->news_model->get_news($slug);
}
}
Melihat kode diatas, Anda dapat melihat beberapa kesamaan dengan file yang kita buat
sebelumnya. Pertama, method __construct(): itu memanggil konstruktor class induknya
(CI_Controller) dan memuat model, sehingga dapat digunakan di semua method di dalam
controller ini. Hal ini juga memuat collection dari fungsi URL Helper, karena kita akan
menggunakan salah satu dari mereka dalam view nanti.

Berikutnya, ada dua method untuk melihat semua berita dan satu berita untuk berita tertentu.
Anda dapat melihat bahwa variabel $slug dilewatkan ke method model dalam method kedua.
Model ini menggunakan slug untuk mengidentifikasi berita yang dikembalikan.

Sekarang data tersebut diambil oleh controller melalui model kami, tapi belum ada yang
ditampilkan. Hal berikutnya yang harus dilakukan adalah mengoper (passing) data ini ke view.

public function index()


{
$data['news'] = $this->news_model->get_news();
$data['title'] = 'News archive';

$this->load->view('templates/header', $data);
$this->load->view('news/index', $data);
$this->load->view('templates/footer');
}
Kode di atas berfungsi untuk mendapat semua record berita dari model dan assign ke sebuah
variabel. Nilai untuk judul juga di-assign ke elemen $data['title'] dan semua data akan
dioper ke view. Anda sekarang perlu untuk membuat view untuk memuat berita. Buat
application/views/news/index.php dan tambahkan potongan kode berikut.

<h2><?php echo $title; ?></h2>

<?php foreach ($news as $news_item): ?>

<h3><?php echo $news_item['title']; ?></h3>


<div class="main">
<?php echo $news_item['text']; ?>
</div>
<p><a href="<?php echo site_url('news/'.$news_item['slug']); ?>">View
article</a></p>

<?php endforeach; ?>


Di sini, setiap item berita diulang dan ditampilkan kepada pengguna. Anda dapat melihat kita
menulis template kita di PHP yang dicampur dengan HTML. Jika Anda memilih untuk
menggunakan template language, Anda dapat menggunakan CodeIgniter class Template Parser
atau parser pihak ketiga.

Halaman ikhtisar berita sekarang selesai, tetapi halaman untuk menampilkan berita individu
masih belum. Model yang dibuat sebelumnya dibuat sedemikian rupa agar mudah digunakan
untuk fungsi ini. Anda hanya perlu menambahkan beberapa kode untuk controller dan membuat
view baru. Kembali ke controller News dan perbaiki method view() seperti berikut:

public function view($slug = NULL)


{
$data['news_item'] = $this->news_model->get_news($slug);

if (empty($data['news_item']))
{
show_404();
}

$data['title'] = $data['news_item']['title'];

$this->load->view('templates/header', $data);
$this->load->view('news/view', $data);
$this->load->view('templates/footer');
}
Alih-alih memanggil method get_news() tanpa parameter, variabel $slug dioper, sehingga akan
mengembalikan item berita tertentu. Satu-satunya hal yang tersisa untuk dilakukan adalah
membuat view yang sesuai di application/views/news/view.php. Masukan kode berikut
dalam file ini.

<?php
echo '<h2>'.$news_item['title'].'</h2>';
echo $news_item['text'];
Routing

Karena rule routing wildcard yang kita buat sebelumnya, Anda perlu route ekstra untuk melihat
controller yang baru saja Anda buat. Modifikasi file routing
(application/config/routes.php) sehingga terlihat sebagai berikut. Hal ini untuk
memastikan permintaan mencapai controller News bukannya langsung ke controller Pages.
Route URI baris pertama dengan slug ke method view() dalam controller News.

$route['news/(:any)'] = 'news/view/$1';
$route['news'] = 'news';
$route['(:any)'] = 'pages/view/$1';
$route['default_controller'] = 'pages/view';
Arahkan browser Anda ke root dokumen Anda, diikuti dengan index.php/news dan lihat
halaman berita Anda.

Membuat Item Berita

Anda sekarang tahu bagaimana Anda dapat membaca data dari database menggunakan
CodeIgniter, tapi Anda masih belum menulis informasi ke database. Di bagian ini Anda akan
memperluas controller news dan model yang dibuat sebelumnya untuk memasukkan fungsi ini.

Membuat Form
Untuk memasukkan data ke dalam database yang Anda butuhkan untuk membuat form di mana
Anda dapat masukan informasi yang akan disimpan. Ini berarti Anda akan membutuhkan form
dengan dua field, satu untuk judul dan satu untuk teks. Anda akan mendapatkan slug dari judul
kita di dalam model. Buat view baru di application/views/news/create.php.

<h2><?php echo $title; ?></h2>

<?php echo validation_errors(); ?>

<?php echo form_open('news/create'); ?>

<label for="title">Title</label>
<input type="input" name="title" /><br />

<label for="text">Text</label>
<textarea name="text"></textarea><br />

<input type="submit" name="submit" value="Create news item" />

</form>
Hanya ada dua hal di sini yang mungkin terlihat asing bagi Anda: fungsi form_open() dan
fungsi validation_errors().

Fungsi yang pertama disediakan oleh form helper dan membuat elemen form dan menambahkan
fungsi tambahan, seperti menambahkan field pencegahan CSRF yang tersembunyi. Fungsi yang
terakhir digunakan untuk melaporkan kesalahan terkait dalam validasi form.

Kembali ke controller news Anda. Anda akan melakukan dua hal di sini, memeriksa apakah form
tersebut di submit dan apakah data yang di submit melewati aturan validasi. Anda akan
menggunakan library validasi form untuk melakukan hal ini.

public function create()


{
$this->load->helper('form');
$this->load->library('form_validation');

$data['title'] = 'Create a news item';

$this->form_validation->set_rules('title', 'Title', 'required');


$this->form_validation->set_rules('text', 'Text', 'required');

if ($this->form_validation->run() === FALSE) {


$this->load->view('templates/header', $data);
$this->load->view('news/create');
$this->load->view('templates/footer');

} else {
$this->news_model->set_news();
$this->load->view('news/success');
}
}
Kode di atas menambahkan banyak fungsionalitas. Beberapa baris pertama memuat form helper
dan library validasi form. Setelah itu, aturan untuk validasi form ditetapkan. Method
set_rules() mengambil tiga argumen; nama field input, nama yang akan digunakan dalam
pesan kesalahan, dan peraturan. Dalam hal ini field judul dan teks yang diharuskan.

CodeIgniter memiliki library validasi form yang kuat seperti yang ditunjukkan di atas. Anda
dapat membaca lebih lanjut tentang library ini disini.

Terus turun, Anda dapat melihat kondisi yang memeriksa apakah validasi form berhasil. Jika
tidak, form yang ditampilkan, jika di submit dan berhasil melewati semua aturan, model ini
dipanggil. Setelah itu, view dimuat untuk menampilkan pesan sukses. Buat view di
application/views/news/success.php dan tulis pesan sukses.

Model

Satu-satunya hal yang tersisa adalah menulis sebuah method yang menulis data ke database.
Anda akan menggunakan class Query Builder untuk memasukkan informasi dan menggunakan
library Input untuk mendapatkan data yang diposting. Buka model yang dibuat sebelumnya dan
tambahkan berikut ini:

public function set_news()


{
$this->load->helper('url');

$slug = url_title($this->input->post('title'), 'dash', TRUE);

$data = array(
'title' => $this->input->post('title'),
'slug' => $slug,
'text' => $this->input->post('text')
);

return $this->db->insert('news', $data);


}
Method baru ini mengurus memasukkan berita ke dalam database. Baris ketiga berisi fungsi
baru, url_title(). Fungsi ini - disediakan oleh URL helper - menghapus string yang Anda
oper, mengganti semua spasi dengan tanda hubung (-) dan memastikan semuanya dalam huruf
kecil. Hal ini membuat Anda mendapatkan slug yang bagus, sempurna untuk menciptakan URI.

Mari kita lanjutkan dengan menyiapkan record yang akan dimasukkan kemudian, dalam array
$data. Setiap elemen sesuai dengan kolom dalam tabel database yang dibuat sebelumnya. Anda
mungkin melihat method baru di sini, yaitu method post() library Input. Method ini memastikan
data sudah dibersihkan, melindungi Anda dari serangan jahat dari orang lain. Library Input
dimuat secara default. Akhirnya, Anda memasukkan array $data kita ke dalam database kita.

Routing
Sebelum Anda dapat mulai menambahkan item berita ke dalam aplikasi CodeIgniter Anda, Anda
harus menambahkan aturan tambahan di file config/routes.php. Pastikan file Anda berisi
seperti berikut ini. Hal ini akan memastikan CodeIgniter melihat create sebagai method bukan
sebagai slug berita ini.

$route['news/create'] = 'news/create';
$route['news/(:any)'] = 'news/view/$1';
$route['news'] = 'news';
$route['(:any)'] = 'pages/view/$1';
$route['default_controller'] = 'pages/view';
Sekarang arahkan browser Anda ke development environment lokal Anda di mana Anda
menginstall CodeIgniter dan tambahkan index.php/news/create ke URL. Selamat, Anda baru
saja membuat aplikasi CodeIgniter pertama Anda! Tambahkan beberapa berita dan periksa
halaman yang berbeda yang Anda buat.

Kesimpulan

Tutorial ini tidak mencakup semua hal yang Anda harapkan dari content management system,
tetapi memperkenalkan Anda ke topik yang lebih penting tentang routing, menulis controller,
dan model. Kami berharap tutorial ini memberi Anda wawasan tentang beberapa pola desain
dasar CodeIgniter, yang dapat Anda perluas.

Sekarang Anda telah menyelesaikan tutorial ini, kami sarankan Anda memeriksa sisa
dokumentasi. CodeIgniter sering dipuji karena sifat dokumentasinya yang komprehensif.
Gunakan ini untuk keuntungan Anda dan baca Pengantar dan Topik Umum secara
menyeluruh. Anda harus membaca referensi class dan helper bila diperlukan.

Setiap programmer PHP menengah seharusnya bisa memahami CodeIgniter dalam beberapa hari.

Jika Anda masih memiliki pertanyaan tentang framework atau kode CodeIgniter Anda sendiri,
Anda dapat:

Mengunjungi forum kami

Mengunjungi IRC chatroom

Menjelajahi Wiki

Anda mungkin juga menyukai