Selamat datang di tutorial warung belajar, dalam tutorial kali ini kita akan melanjutkan pembahasan dari seri tutorial codeigniter 4, dalam tutorial kali ini kita akan membahas cara mengatur routing di codeigniter 4. Show Dalam tutorial sebelumnya kita sudah membahas mengenai cara membuat controller di Codeigniter 4, sengaja saya bahas itu dulu karena memang nantinya saat kita belajar membuat routing di codeigniter 4, kita akan banyak menggunakan controller, jadi memang sengaja saya bahas agar teman – teman tidak bingung saat saya menggunakan controller. Video Tutorial Belajar Codeigniter 4 – Mengatur Routing di Codeigniter 4Untuk teman – teman yang terbiasa belajar dengan melihat video tutorial, bisa tonton video tutorial kita di youtube, terkait cara mengatur routing di Codeigniter 4 Mengenal RoutingRouting adalah sebuah fitur yang disediakan oleh codeigniter 4, fitur ini digunakan untuk mengatur ketika pengguna aplikasi mengakses URL tertentu apa sih yang akan dilakukan oleh Codeigniter ? Akan diarahkan ke controller dan method mana ? hal ini sangatlah penting untuk mengatur proses yang dilakukan codeigniter ketika ada request dari pengguna aplikasi. Mungkin pembahasanya agak rumit ya… kita akan coba sederhanakan ya, perhatikan URL dibawah ini : www.example.com/profil diatas ada contoh sebuah URL, dimana URL utamanya adalah www.example.com, berikutnya disitu ada tulisan profil, nah ketika kita mengakses URL itu maka web akan memberikan response tampilan tertentu, nah hal seperti ini diatur dibagian routing. Routing mengatur jika ada request URL dari pengguna, apa sih yang akan dilakukan oleh aplikasi web, itu fungsi dari routing. Walaupun codeigniter ini tidak seperti laravel, yang mengharuskan setiap halaman harus kita buatkan routing, codeigniter lebih dinamis, meskipun kita tidak menuliskan perintah di routing, controller serta method didalamnya masih dapat kita akses dengan memperhatikan URI Segment yang ada di Codeigniter, jadi disini akan saya singgung terkait Penggunaan URI Segment di Codeigniter 4. Perhatikan URL dibawah ini : www.example.com/siswa/profil/12 Kita akan coba membagi URL diatas menjadi beberapa bagian sesuai dengan URI Segment, menjadi seperti berikut ini :
jadi jika diartikan URL diatas akan mengakses method profil pada controller siswa, serta mengirimkan nilai angka 12 sebagai nilai dari parameter di method profil. itu adalah URI Segment, jika anda tidak mendaftarkan controller atau method melalui routing, anda bisa menggunakan URI segment ini untuk mengakses controller ataupun method tanpa mendaftarkannya dibagian routing. tetapi jika anda ingin membuat URL yang custom, anda bisa memanfaatkan fitur routing. Membuka File untuk setting RoutingSaya asumsikan teman – teman sudah menginstall Codeigniter 4 di komputer teman – teman, dalam contoh ini direktori project saya bernama ci4app, dan saya simpan di web direktori dari xampp, yaitu berada c:/xampp/htdocs/ci4app Untuk mengakses file untuk setting routing, anda bisa membukanya pada file app/Config/Routes.php pada file ini terdapat 1 routing bawaan codeigniter, perhatikan pada Line 33
$routes->get('/', 'Home::index');
Keterangan : pada baris perintah route tersebut ada 3 bagian yang perlu anda perhatikan :
jadi kalau kita melihat contoh routing diatas, ketika kita mengakses halaman utama dari web codeigniternya, maka codeigniter akan mengarahkan untuk mengakses method index didalam controller Home Menambahkan Routing baruBerikutnya kita akan belajar untuk menambahkan routing baru, untuk bahan belajar, silahkan buat sebuah Controller dengan nama Siswa. Buat file baru dengan Siswa.php dan simpan di folder app/Controllers, untuk isi codenya adalah sebagai berikut ini :
<?php namespace App\Controllers; class Siswa extends BaseController { public function index() { echo 'Halo ini adalah controller Siswa'; } public function profil() { echo 'Ini adalah method profil di controller Siswa'; } }
Keterangan :
Baik kita akan mencoba mengakses 2 method tersebut, kita jalankan dulu local development server dengan menuliskan perintah :
php spark serve lalu akses URL berikut ini :
http://localhost:8080/siswa
Maka akan menampilkan tulisan : Halo ini adalah controller Siswa Hal ini dikarenakan kita mengakses controller siswa, ingat untuk URI Segment pertama, yang kita tuliskan setelah alamat webnya adalah controller, karena kita tidak menuliskan methodnya sebagai URI Segment kedua, maka otomatis mengakses method index, sehingga yang tampil adalah tulisan “Halo ini adalah controller Siswa”, karena method yang otomatis diakses ketika kita tidak menulisnya di URI Segment kedua setelah controller adalah method index Berikutnya akses URL berikut ini :
http://localhost:8080/siswa/profil
maka akan menampilkan tulisan :
Ini adalah method profil di controller Siswa
perhatikan dibagian URL kita menuliskan URI Segment 1 adalah siswa, dan URI Segment 2 adalah profil, yang artinya kita mengakses method profil di bagian controller siswa, sehingga menampilkan text “Ini adalah method profil di controller Siswa” Lalu berikutnya bagaimana kalau kita ingin, saat kita mengakses URL seperti dibawah ini :
http://localhost:8080/profil-siswa
akan mengakses method profil di controller Siswa, nah jika anda ingin membuat hal seperti ini, anda perlu menggunakan Routing Caranya silahkan buka file Routes.php didalam folder app/Config/Routes.php, lalu tambahkan routing baru, perintahnya adalah sebagai berikut :
$routes->get('/profil-siswa', 'Siswa::profil');
tuliskan perintah diatas dibawah perintah routing :
$routes->get('/', 'Home::index');
Setelah itu kita coba mengakses URL berikut ini, jangan lupa menjalankan local development server dulu ya, dengan perintah php spark serve :
http://localhost:8080/profil-siswa
hasilnya akan menampilkan tulisan seperti berikut ini : Penjelasan : kita analisa routing yang kita buat ya, coba perhatikan
$routes->get('/profil-siswa', 'Siswa::profil');
perintah routing diatas memiliki arti :
Mengatur Route NameBerikutnya kita akan membahas mengenai route name, route name adalah fitur untuk memberikan nama terhadap routing yang kita buat. sebagai contoh kita akan memberikan nama pada routing yang barusan kita buat dengan nama profil, maka kita perlu merubah perintah routing menjadi seperti berikut ini :
$routes->get('/profil-siswa', 'Siswa::profil', ['as' => 'profil']);
Keterangan :
baik setelah kita memberikan nama pada routing tersebut, lalu apa fungsi ? dengan anda memberikan nama terhadap routing, anda bisa mengakses routing menggunakan Link, sebagai contoh kita akan membuat link yang mengakses routing dengan nama profil tersebut, sebagai contoh linknya akan kita letakkan di method index di controller Siswa. ubah code controller Siswa menjadi seperti berikut ini :
<?php namespace App\Controllers; class Siswa extends BaseController { public function index() { echo "Halo ini adalah controller Siswa <a href='" . route_to('profil') . "'>Link ke routing profil</a>"; } public function profil() { echo 'Ini adalah method profil di controller Siswa'; } }
Berikutnya kita coba mengakses URL sebagai berikut ini :
http://localhost:8080/siswa
maka akan ada link dengan tulisan “Link ke routing profil“, silahkan klik link tersebut maka anda akan diarahkan ke URL
http://localhost:8080/profil-siswa
Hal tersebut karena pada link tersebut kita mengakses routing dengan nama profil, perintahnya seperti pada line 9 controller Siswa :
echo "Halo ini adalah controller Siswa <a href='" . route_to('profil') . "'>Link ke routing profil</a>";
kita bisa menggunakan function route_to(‘nama routing’) lalu dibagian parameter tuliskan nama routing, dalam contoh ini kita tuliskan profil, sehingga ketika klik link itu, akan mengakses routing dengan profil, yang akan mengakses url : http://localhost:8080/profil-siswa. Membuat Closure di RoutingBerikutnya kita akan membahas cara membuat closure di routing, jadi kita bisa membuat function yang berisi perintah php, dimana akan dijalankan ketika routing diakses, sebagai contoh kita akan menambahkan routing dengan nama coba, silahkan buka file routing didalam folder : app/Config/Routes.php berikutnya tambahkan code seperti berikut ini dibagian routing.
$routes->get('/coba', function () { echo "Ini adalah route coba"; });
Berikutnya kita akan mengakses route coba tersebut, jangan lupa menjalankan local development server dengan perintah : php spark serve maka hasilnya adalah sebagai berikut ini : Keterangan : akan menampilkan tulisan “Ini adalah route coba“, hal ini karena kita menuliskan closure didalam route coba, dimana didalam function tersebut kita menggunakan perintah echo untuk menampilkan text “Ini adalah route coba” Membuat Placeholder di RoutingBerikutnya kita akan belajar bagaimana cara membuat placeholder di routing, secara sederhana placeholder berfungsi untuk menambahkan parameter di bagian routing, parameter ini nantinya dapat digunakan dibagian method di controller. selain dapat menambahkan parameter, anda juga dapat menentukan jenis data yang dikirimkan melalui parameter tersebut, apakah berbentuk angka, atau huruf, atau dapat berupa bentuk data lainnya, sehingga anda dapat mengatur value parameter yang dikirimkan nantinya. Untuk dokumentasi resmi dari codeigniter 4, bisa anda lihat melalui alamat sebagai berikut : https://codeigniter.com/user_guide/incoming/routing.html?highlight=route#placeholders Sebagai contoh kita akan membuat method baru didalam controller Siswa, method baru kita beri nama dataSiswa, sehingga kurang lebih controller Siswa menjadi seperti berikut ini :
<?php namespace App\Controllers; class Siswa extends BaseController { public function index() { echo "Halo ini adalah controller Siswa <a href='" . route_to('profil') . "'>Link ke routing profil</a>"; } public function profil() { echo 'Ini adalah method profil di controller Siswa'; } public function dataSiswa($nama, $usia) { echo "Nama Siswa Adalah $nama, usia $usia"; } }
Keterangan :
Berikutnya kita buat routing baru dengan nama data-siswa, yang akan mengakses method dataSiswa didalam controller Siswa. Silahkan buka file app/Config/Routes.php lalu tambahkan perintah routing dibawah ini :
$routes->get('data-siswa/(:alpha)/(:num)', 'Siswa::dataSiswa/$1/$2');
Baik kita coba mengaksesnya dulu ya, setelah itu kita akan bahas apa arti perintah routing diatas, jalankan local development server dengan perintah php spark serve lalu akses URL : localhost:8080/data-siswa/taufik/17 Hasilnya adalah sebagia berikut : Keterangan : Kita bahas terlebih dahulu dibagian perintah routing.
$routes->get('data-siswa/(:alpha)/(:num)', 'Siswa::dataSiswa/$1/$2');
routing tersebut, kita berikan URL data-siswa, dimana akan mengakses method dataSiswa didalam Controller Siswa tidak hanya itu, disitu kita berikan 2 parameter, dimana parameter yang dikirimkan melalui URL ini akan dijadikan nilai parameter pada method dataSiswa pada Controller Siswa berikutnya perhatikan dibagian routing kita menyebutkan jenis parameter (placeholder) pertama adalah (:alpha) yang artinya nilainya harus berupa huruf, dan dibagian parameter kedua (placeholder) adalah (:num) yang artinya nilainya harus berupa angka, pada dokumentasi dari codeigniter 4, terdapat beberapa jenis placeholder yang dapat digunakan :
sehingga saat anda mengakses URL localhost:8080/data-siswa/taufik/17 maka akan menampilkan text : Nama Siswa Adalah taufik, usia 17 karena 2 paremeter tersebut taufik dan 17, akan dikirimkan kedalam method dataSiswa didalam controller Siswa, sehingga akan menampilkan tulisan “Nama Siswa Adalah taufik, usia 17” nah seperti penjelasan sebelumnya placeholder parameter pertama adalah (:alpha) yang artinya harus berupa huruf, dan placeholder parameter kedua adalah (:num) yang artinya harus berupa angka, nah sekarang bagaimana kalau kita melanggar aturan itu ?, parameter pertama akan kita isi dengan angka, dan parameter kedua akan kita isi dengan huruf, contohnya URL berikut ini : localhost:8080/data-siswa/17/taufik maka hasilnya adalah sebagai berikut : maka akan menampilkan pesan error, karena kita melanggar aturan tipe placeholder saat mengakses routing data-siswa. Membuat Multiple RoutingBerikutnya kita akan belajar cara membuat multiple routing atau bisa dikatakan routing dengan nama yang sama, tetapi kita bedakan tipe placeholdernya, sehingga codeigniter akan mendeteksi tipe placeholder yang seperti apa yang digunakan, yang akan menentukan method mana yang akan diakses. dalam contoh ini kita akan buat 2 routing dengan nama “get-siswa” hanya saja kita bedakan dibagian placeholdernya :
berikutnya kita akan buat 2 method baru didalam controller Siswa yaitu :
Baik kita tambahkan terlebih dahulu untuk 2 parameter tersebut didalam controller Siswa, sehingga Controller Siswa menjadi seperti berikut ini :
<?php namespace App\Controllers; class Siswa extends BaseController { public function index() { echo "Halo ini adalah controller Siswa <a href='" . route_to('profil') . "'>Link ke routing profil</a>"; } public function profil() { echo 'Ini adalah method profil di controller Siswa'; } public function dataSiswa($nama, $usia) { echo "Nama Siswa Adalah $nama, usia $usia"; } public function siswaDataId($id) { echo "Ini adalah method dengan nama siswaDataId dengan ID $id"; } public function siswaDataName($name) { echo "Ini adalah method dengan nama siswaDataName dengan Name $name"; } }
Keterangan :
Berikutnya kita akan buat bagian routingnya, silahkan buka file app/Config/Routes.php, lalu tambahkan routing seperti berikut ini :
$routes->get('get-siswa/(:num)', 'Siswa::siswaDataId/$1'); $routes->get('get-siswa/(:alpha)', 'Siswa::siswaDataName/$1');
Keterangan : kita buat 2 parameter dengan nama yang sama yaitu get-siswa, yang membedakan hanyalah placeholder :
baik kita akan coba untuk mengakses routing tersebut, jangan lupa untuk menjalankan local development server dengan perintah “php spark serve” kita coba mengakses URL : localhost:8080/get-siswa/3 maka yang tampil adalah sebagai berikut : maka akan diakses method siswaDataId dengan mengirimkan angka 3 sebagai parameternya, karena dibagian parameter kita menuliskan angka berikutnya kita coba mengakses URL : localhost/get-siswa/taufik maka yang tampil adalah sebagai berikut : maka akan diakses method siswaDataName dengan mengirimkan string “taufik” sebagai parameternya, karena dibagian parameter kita menuliskan huruf Membuat Group RouteBerikutnya kita akan membahas mengenai cara membuat group route di codeigniter 4, jadi anda bisa mengelompokkan route yang anda buat. Contohnya anda akan membuat route seperti berikut ini :
jika dilihat hal tersebut memiliki kesamaan, yaitu bagian admin, sebagai contoh agar anda mudah memahami, kita buat 2 controller dengan users dan blog, 2 controller ini kita simpan didalam folder app/Controllers/Admin baik silahkan buat dulu folder Admin didalam folder app/Controllers berikutnya silahkan buat file controller dengan nama Users.php didalam folder admin yang baru saja kita buat.
<?php namespace App\Controllers\Admin; use App\Controllers\BaseController; class Users extends BaseController { public function index() { echo 'Ini adalah halaman Index dari Controller Users didalam folder Admin'; } }
Berikutnya silahkan buat file controller baru dengan nama Blog.php didalam folder admin dengan isi code seperti berikut ini :
<?php namespace App\Controllers\Admin; use App\Controllers\BaseController; class Blog extends BaseController { public function index() { echo 'Ini adalah halaman Index dari Controller Blog didalam folder Admin'; } }
Baik kita sudah membuat 2 controller yaitu Users dan Blog didalam folder Admin. Berikutnya kita akan membuat route group, buka file Routes.php didalam app/Config lalu tambahkan skrip route seperti berikut ini :
$routes->group('admin', function ($routes) { $routes->add('users', 'Admin\Users::index'); $routes->add('blog', 'Admin\Blog::index'); });
Setelah itu kita akan coba untuk mengaksesnya, jangan lupa jalankan untuk local development servernya :
php spark serve Berikutnya coba kita mengakses URL berikut ini :
http://localhost:8080/admin/users
Maka akan tampil Text Ini adalah halaman Index dari Controller Users didalam folder Admin Karena saat kita mengakses URL diatas akan mengakses method index di controller Users, controller Users berada didalam folder admin, seperti apa yang kita tuliskan dibagian route group. Berikutnya coba kita mengakses URL berikut ini :
http://localhost:8080/admin/blog
Maka akan tampilkan Text
Ini adalah halaman Index dari Controller Blog didalam folder Admin
Karena saat kita mengakses URL diatas akan mengakses method index di controller Blog, controller Blog berada didalam folder admin, seperti apa yang kita tuliskan dibagian route group. Jadi kurang lebih seperti itu ya teman – teman beberapa fitur routing yang dapat anda gunakan di Codeigniter 4, untuk pembahasan routing lebih jelasnya bisa melihat di dokumentasi resmi dari Codeigniter 4 : https://codeigniter4.github.io/userguide/incoming/routing.html Baik sekian dulu sampai jumpa di tutorial Codeigniter 4 Selanjutnya Related |