Cara Membuat Base URL Dinamis dan Flexible di CodeIgniter 4 (Tanpa Ribet Ubah Config)

Cara Membuat Base URL Dinamis dan Flexible di CodeIgniter 4 (Tanpa Ribet Ubah Config)

Kalau kamu pakai CodeIgniter 4 (CI4), pasti pernah ngalamin masalah ini: pas jalanin lewat php spark serve, baseURL-nya cocok. Tapi pas pindah ke Apache atau hosting lokal, jadi error. Harus ubah-ubah $baseURL di App.php terus? Ribet, bro!

Nah, di artikel ini Kang Cahya bakal kasih solusi jitu biar baseURL kamu dinamis dan fleksibel, tanpa harus ubah-ubah file config lagi.

Kenapa baseURL Penting?

baseURL adalah fondasi buat nge-load semua asset: CSS, JS, gambar, dan ngejalanin fungsi base_url() atau site_url().

Solusi: Override baseURL di BaseController

Daripada ubah langsung di app/Config/App.php, kita override aja baseURL-nya di BaseController.php. Lebih aman, lebih clean.

Langkah-langkah:

  1. Buka app/Controllers/BaseController.php
  2. Update method initController() jadi seperti ini:
use CodeIgniter\Config\Services;
use Config\App;

public function initController(\CodeIgniter\HTTP\RequestInterface $request, \CodeIgniter\HTTP\ResponseInterface $response, \Psr\Log\LoggerInterface $logger)
{
    parent::initController($request, $response, $logger);

    // Hanya jika bukan CLI
    if (php_sapi_name() !== 'cli' && isset($_SERVER['HTTP_HOST'])) {
        $scheme = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https' : 'http';
        $host   = $_SERVER['HTTP_HOST'];
        $script = $_SERVER['SCRIPT_NAME'];
        $path   = rtrim(str_replace(basename($script), '', $script), '/');

        $dynamicBaseURL = $scheme . '://' . $host . $path . '/';

        // Set baseURL dinamis
        $config = config(App::class);
        $config->baseURL = $dynamicBaseURL;
    }
}

Bonus: Bikin Helper baseURL Sendiri

Kalau pengin lebih fleksibel lagi, kamu bisa bikin helper khusus:

// app/Helpers/dynamic_base_url.php
function dynamic_base_url(): string { $scheme = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https' : 'http'; $host = $_SERVER['HTTP_HOST'] ?? 'localhost'; $script = $_SERVER['SCRIPT_NAME'] ?? ''; $path = rtrim(str_replace(basename($script), '', $script), '/'); return $scheme . '://' . $host . $path . '/'; }

Sebelum Helper digunakan, jangan lupa daftarkan Helpernya di Config/Autoload.php. Jika sudah, lalu selanjutnya tinggal panggil di view atau controller:

<link rel="stylesheet" href="<?= dynamic_base_url() . 'assets/css/style.css' ?>">

Penutup

Dengan trik di atas, kamu nggak perlu lagi capek ubah-ubah config tiap kali ganti cara jalankan aplikasi. Mau pakai spark, Apache, atau deploy ke hosting, semuanya tinggal jalan.

Semoga bermanfaat, dan kalau kamu suka artikel kayak gini, jangan lupa bookmark kang-cahya.com. Sampai jumpa di artikel selanjutnya!

0/Post a Comment/Comments

Lebih baru Lebih lama