Codeigniter Url

Banyak pemula yang bingung tentang helper URL, karena itu saya membuat penjelsan lebih detail tentang helper ini.

Seperti apa bedanya base_url() dengan site_url() dan kapan kita harus memakainya?

Saya sengaja memisah penjelsannya dengan 📖 tutorial utama Codeigniter, agar bisa membahas lebih mendalam.

Baiklah..

Mari kita mulai!

Apa itu Helper URL?

Helper URL merupakan helper yang disediakan oleh Codeigniter yang berisi fungsi-fungsi untuk mengolah URL. 1

Menurut saya:

Helper ini merupakan helper yang paling sering digunakan di dalam aplikasi.

Helper URL bisa kita pakai di dalam Controller dan View.

Kalau di dalam model bisa tidak?

Bisa-bisa saja.

Tapi..

Itu bukanlah praktek yang baik.

Karena tugasnya model adalah berurusan dengan data.

Lalu gimana cara menggunakan Helper URL?

Mari kita bahas:

Cara Menggunakan Helper URL

Helper URL dapat kita gunakan setelah melakukan load helper.

Contoh:

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

Load helper bisa kita lakukan di dalam Controller.

🗒 Catatan:

Helper URL di Codeigniter 4 sudah di-load secara otomatis, jadi kita tidak perlu load manual.

Jika ingin di-load otomatis pada Codeigniter 3, maka kita bisa tentukan pada file autoload.php seperti ini:

$autoload['helper'] = array('url');

Setelah berhasil di-load, barulah kita bisa menggunakan fungsi-fungsi yang disediakan oleh helper URL.

Apa saja fungsi-fungsinya?

Mari kita bahas satu-per-satu:

Fungsi-fungsi di dalam Helper URL

Helper URL menyediakan beberapa fungsi yang memudahkan kita saat berurusan dengan URL.

1. Fungsi site_url()

Fungsi site URL akan mengembalikan nilai berupa URL berdasarkan konfigurasi base_url dan index_page yang sudah ditentukan di dalam config.

Contoh:

Misalnya konfigurasi di aplikasi kita seperti ini:

$config['base_url'] = 'http://www.petanikode.com/';
$config['index_page'] = 'index.php';

Maka saat kita menggunakan fungsi site_url(), ia akan menghasilkan:

http://www.petanikode.com/index.php

Kapan kita harus menggunakan site_url()?

Gunakanlah fungsi site_url() saat…

Membuat link ke halaman tertentu:

<a href="<?= site_url('login') ?>">Login</a>

Melakukan redirect ke halaman tetentu:

redirect(site_url('login'));

Membuat URL action pada form:

<form action="<?= site_url('login') ?>">

</form>

2. Fungsi base_url()

Fungsi base_url() hampir sama seperti site_url() yang menghasilkan URL berdasarkan kofigurasi base_url. Tetapi, base_url() tidak menyertakan index.php di belakangnya.

Fungsi base_url() berfungsi untuk menghasilkan root URL dari aplikasi.

Misalnya konfigurasi di aplikasi kita seperti ini:

$config['base_url'] = 'http://www.petanikode.com/';
$config['index_page'] = 'index.php';

Maka saat kita menggunakan fungsi base_url(), ia akan menghasilkan:

http://www.petanikode.com/

Kapan kita harus menggunakan base_url()?

Gunakanlah base_url()…

Saat membuat link/URL untuk CSS dan Javascript:

<link href="<?= base_url('css/style.css') ?>" />
<script src="<?= base_url('js/app.js') ?>"></script>

Maka akan menghasilkan URL seperti ini:

http://www.petanikode.com/css/style.css
http://www.petanikode.com/js/app.js

Fungsi base_url() biasanya sering kita pakai untuk membuat URL atau link file statis seperti gambar, CSS, javascript, Video, dan file yang diupload.

Apa perbedaan base_url() dengan site_url()?

Berdasarkan contoh yang saya berikan, sepertinya kamu sudah bisa menebak apa bedanya site_url() dengan base_url().

Yap! Perbedaanya terletak pada URL yang di hasilkan.

Coba perhatikan ini:

base_url('css/style.css');
// hasil -> http://www.petanikode.com/css/style.css

site_url('css/style.css');
// hasil -> http://www.petanikode.com/index.php/css/style.css

Pada kasus ini, kita menggunakan base_url() dan site_url() untuk membuat link CSS.

Hasilnya tentu akan berbeda.

Link yang valid adalah link yang menggunakan base_url(). Sedangkan site_url() menambahkan index.php yang akan membuat link file CSS menjadi salah dan pasti tidak akan ditemukan.

Karena itu, untuk membuat link static assets gunakanlah base_url() bukan site_url().

3. Fungsi current_url()

Fungsi ini akan menghasilkan URL yang sedang dibuka.

Misalnya kita sedang membuka URL berikut:

https://www.petanikode.com/tutorial/codeigniter

Maka saat memanggil fungsi current_url(), ia akan menghasilkan URL persis seperti di atas.

⚠️ Peringatan Penting!

Fungsi ini mengadung bug pada Codeigniter 4.1.2, dan bisa diganti dengan fungsi site_url(uri_string())

4. Fungsi uri_string()

Fungsi ini akan menghasilkan segmen URI berdasarkan halaman yang sedang dibuka.

Misalkan kita sedang membuka halaman ini:

http://petanikode.com/blog/comments/123

Maka fungsi uri_string() akan menghasilkan:

blog/comments/123

Fungsi ini biasanya dipakai saat kita ingin membuat breadcrumb.

5. Fungsi index_page()

Fungsi ini akan menghasilkan nilai berdasarkan konfigurasi index_page.

Misalkan kofigurasinya seperti ini:

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

Maka fungsi index_page() akan menghasilkan:

index.php

6. Fungsi anchor()

Fungsi ini akan menghasilkan element link. Biasanya digunakan untuk membuat link.

Contoh:

echo anchor('news/local/123', 'My News', 'title="News title"');
// Hasil: <a href="http://example.com/index.php/news/local/123" title="News title">My News</a>

echo anchor('news/local/123', 'My News', array('title' => 'The best news!'));
// Hasil: <a href="http://example.com/index.php/news/local/123" title="The best news!">My News</a>

echo anchor('', 'Click here');
// Hasil: <a href="http://example.com">Click Here</a>

7. Fungsi anchor_popup()

Fungsi ini akan menghasilkan link untuk membuka jendela popup.

Contoh:

$atts = array(
        'width'       => 800,
        'height'      => 600,
        'scrollbars'  => 'yes',
        'status'      => 'yes',
        'resizable'   => 'yes',
        'screenx'     => 0,
        'screeny'     => 0,
        'window_name' => '_blank'
);

echo anchor_popup('news/local/123', 'Click Me!', $atts);

Maka saat link diklik, halaman news/local/123 akan dibuka di jendela pop baru.

8. Fungsi mailto()

Fungsi mailto() akan menghasilkan link untuk alamat email. Saat link diklik, maka akan membuka aplikasi mail client.

Contoh:

echo mailto('[email protected]', 'Click Here to Contact Me');

// atau bisa juga:
$attributes = array('title' => 'Mail me');
echo mailto('[email protected]', 'Contact Me', $attributes);

9. Fungsi safe_mailto()

Sama seperti mailto() yang menghasilkan link untuk email. Akan tetapi alamat emailnya diproteksi, sehingga akan lebih aman dari bot spam.

Contoh:

echo safe_mailto('[email protected]', 'Click Here to Contact Me');

Kalau ini merupakan gabungan dari fungsi no. 6, 7, dan 9. Fungsi auto_link() akan menghasilkan sebuah link dari parameter yang diberikan.

Parameter dapat berupa alamat email atauapun URL.

Contoh:

echo auto_link('http://petanikode.com');
// hasil: <a href="http://petanikode.com">http://petanikode.com</a>

echo auto_link('[email protected]');
// hasil: <a href="mailto:[email protected]">[email protected]</a>

11. Fungsi url_title()

Fungsi ini menghasilkan URL string berdasarkan teks yang diberikan pada parameter.

$title = "What's wrong with CSS?";
$url_title = url_title($title);
// Hasil: Whats-wrong-with-CSS

Biasanya fungsi ini dipakai untuk membuat URL seperti slug.

Fungsi url_title() bisa juga menghasilkan URL dengan underscore.

Contoh:

$title = "What's wrong with CSS?";
$url_title = url_title($title, 'underscore');
// Hasil: Whats_wrong_with_CSS

12. Fungsi prep_url()

Fungsi ini akan menambahkan http:// pada paramter URL yang diberikan.

Contoh:

echo prep_url('example.com');
// hasil http://example.com

13. Fungsi redirect()

Fungsi ini untuk melakukan redirect atau pengalihan ke halaman tertentu.

Contoh penggunaan:

redirect('/login/form/');

// with 301 redirect
redirect('/article/13', 'location', 301);

Fungsi Helper URL di Codeigniter 4

Fungsi Helper URL di Codeigniter 4 tidak jauh berbeda dengan Codeigniter 3. Hanya saja ada beberapa fungsi tambahan.

Berikut ini fungsi-fungsi helper URL yang ditambahkan di Codeigniter 4: 2

1. Fungsi previous_url()

Fungsi previous_url() merupakan fungsi yang menghasilkan alamat URL dari halaman yang dikunjungi sebelumnya.

Misalnya:

Saya membuka halaman ini,

http://contoh.com/about/

Kemudian beralih ke

http://contoh.com/login

Nah, jika kita menjalankan previous_url() di halaman login..

echo previous_url();

Maka akan menghasilkan:

http://contoh.com/about/

2. Fungsi url_to()

Fungsi ini akan menghasilkan URL absolut yang menuju ke sebuah method pada Controller.

Biasanya dipakai untuk membuat link seperti site_url().

Contoh penggunaan:

echo url_to('Home::index');
// hasil: http://contoh.com/

// bisa juga dengan argumen
echo url_to('Post::list', 'home');
// hasil: http://contoh.com/post/list

Contoh penggunaan di dalam View:

<a href="<?= url_to('Auth::login')">Login</a>

3. Fungsi url_is()

Fungsi url_is() berfungsi untuk mengecek URL pada halaman yang sedang dibuka. Fungsi ini akan menghasilkan true jika hasil cek sama dengan yang ditentukan.

Contoh:

if (url_is('admin')) { ... }

Jika kita membuka halaman-halaman berikut

/admin
/admin/
/admin/users
/admin/users/schools/classmates/

Maka fungsi url_is() akan menghasilkan true, karena kita sedang membuka halaman admin.

Biasanya fungsi url_is() digunakan untuk menentukan class active pada menu.

Contoh:

<nav>
	<a href="#" class="<?= url_is('home') ? 'active': '' ?>">Home</a>
  <a href="#" class="<?= url_is('about') ? 'active': '' ?>">About</a>
  <a href="#" class="<?= url_is('contact') ? 'active': '' ?>">Contact</a>
</nav>

4. Fungsi mb_url_title()

Fungsi ini sama seperti url_title() yang berfungsi untuk mengubah teks menajdi URL. Namun, fungsi ini juga mengubah karakter aksen secara otomatis.

Contoh penggunaan:

echo mb_url_title("my resumé");
// hasil: my-resume

Perhatikan, di sana ada huruf aksen é yang otomatis diubah menjadi e.

Akhir Kata…

Tidak semua fungsi ini harus kamu hapal. Kalau tidak ingat, lihat dan baca saja dokumentasinya.

..dan tidak semua fungsi ini harus kamu gunakan.

Gunakan mana yang kamu butuhkan saja.

Semoga bermanfaat.


  1. Doc. Codeigniter 3. URL Helper. diakses 13 Agustus 2021 ↩︎

  2. Doc. Codeigniter 4. URL Helper. diakses 13 Agustus 2021 ↩︎