Routing MVC
Routing MVC
Clean URL
File index.php
<?php
?>
1
Hasilnya
File .htaccess digunakan untuk mereplace url yang dikirim user sesuai
dengan rule yang ditetapkan pada .htaccess
RewriteEngine On
Cetak url sebagai alat untuk menguji isi dari parameter url
File index.php
<?php
$url = $_GET['url'];
echo $url;
Ubah file index.php pada root directory menjadi seperti tampak dibawah
ini.
<?php
$url = $_GET['url'];
echo $url;
Ketika kita tambahkan parameter pada url, maka hasilnya akan tampak
sebagai berikut
Sekarang ubah file index.php pada folder root directory web anda
<?php
if (isset($url[1])) {
$controllers->{$url[1]}();
}
Kemudian, ubah juga file help.php yang berada pada folder controllers
<?php
class Help
{
function __construct()
{
echo "Anda berada pada controller class Help";
}
function other()
{
echo "Anda berada pada method/parameter other";
}
}
sekarang, coba uji kembali file url sebalumnya
Sekarang kita uji dengan parameter tambahan setelah other. Ubah kode
index.php dengan menambahkan parameter ke-2 setelah controller
<?php
if (isset($url[2])) {
$controllers->{$url[1]}($url[2]);
}
if (isset($url[1])) {
$controllers->{$url[1]}();
}
function other($args=false)
{
echo "Anda berada pada method/parameter other <br>";
echo "optional: " . $args;
}
if (isset($url[2])) {
$controllers->{$url[1]}($url[2]);
}
if (isset($url[1])) {
$controllers->{$url[1]}();
}
Jika kita uji dengan menyisakan tanda slash dibelakang controller, ternyata
masih muncul error. Lihat tampilan berikut
Untuk mengatasinya, gunakan fungsi rtrim. Lihat kode selengkapnya
sebagai berikut
<?php
$url = $_GET['url'];
$url = rtrim($url, '/');
$url = explode('/', $url);
print_r($url);
if (isset($url[2])) {
$controllers->{$url[1]}($url[2]);
}
if (isset($url[1])) {
$controllers->{$url[1]}();
}
Berikut tampilannya
Bootstrapping
Buatlah class Bootstrap pada folder libs. Kemudian buatlah function
__construct() yang isinya diambil dari file index.php. berikut isi dari file
bootsrap.php
Sekarang, intansiasi file bootstrap pada file index.php
Sekarang, jika kita uji url dengan controller yang tidak ditemukan pada
folder controller, maka akan muncul error seperti dibawah ini
Untuk mengatasinya, kita buat file error.php pada folder controllers dan
tambahkan/ubah exeption pada file bootsrap.php. lihat kode selengkapnya
sebagai berikut:
File bootstrap.php
Sekarang, jika kita lakukan uji coba maka hasilnya akan tampak seperti
gambar di bawah ini
Menggabungkan controller, model dan view
Pada foler views, buatlah folder error dan tambahkan file index.php pada
folder tersebut
<div id="header">
Header
</div>
<div id="content">
Buat file footer.php yang akan digunakan untuk menampilkan footer dari sebuah
aplikasi.
</div>
<div id="footer">(C) Footer</div>
</body>
</html>
Buat file index.php di dalam folder views/index/. Tambahkan kode program seperti
berikut ini. Ubah juga file index.php yang berada di folder views/error/, namun
untuk file ini ucapan selamat datang dihilangkan saja supaya lebih gampang untuk
membedakannya
<?php require 'views/header.php'; ?>
Ubah file controller index.php yang berada pada folder controller menjadi seperti
berikut ini
<?php
class Index extends Controller
{
function __construct()
{
parent::__construct();
$this->view->render('index/index');
}
}
#header {
padding: 20px;
background: gold;
}
#content {
background: #fff;
padding: 20px;
}
#footer {
background: green;
padding: 20px;
}
<div id="header">
Header
</div>
<div id="content">
Kemudian, buatlah file custom.js untuk menguji coba apakah jquery telah berhasil
terpasang dengan menghisi file tersebut dengan kode seperti berikut ini
$(document).ready(function(){
alert(1);
});
<div id="header">
Header
<br />
<a href="index">Home</a>
<a href="help">Help</a>
<a href="login">Login</a>
</div>
<div id="content">
Buat controller login di folder controllers dengan nama file login.php. berikut kode
dari file login.php tersebut
<?php
class Login extends Controller
{
function __construct()
{
parent::__construct();
$this->view->render('login/index');
}
}
Buat view baru dengan membuat folder login pada folder views dan file index.php.
Adapun kode dari file view login tersebut adalah sebagai berikut
<?php require 'views/header.php'; ?>
Ketika diuji coba, tampilan untuk view login tersebut tampak sebagai berikut
Untuk menu Help, halaman yang tampil masih belum menggunakan template yang
sudah kita buat. Jika kita panggil menu Help tersebut, header dan footer belum
diikutkan dalam layout tampilan. Untuk menggunakan template, maka ubahlah file
controller Help dengan menambahkan kode pada function __construct() seperti
contoh berikut
function __construct()
{
parent::__construct();
$this->view->render('help/index');
}
Untuk menampilkan hasil pemanggilan view tersebut, buatlah pula folder help di
dalam folder views dan file index.php di dalam folder help tersebut. Berikut kode
file index.php yang berada di folder help
<?php require 'views/header.php'; ?>
Jika diuji coba, menu help tersebut telah berfungsi dan menghasilkan perubahan
tampilan hanya halaman tengah (content) dengan menampilkan halaman help.
Untuk header dan footer tidak ikut berubah.