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:
- Buka
app/Controllers/BaseController.php
- 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!
Posting Komentar