tulisan ini sebagian besar mengambil dari tutorial codeigniter.
Konfigurasi awal
Konfigurasi awal melakukan perubahan pada file env rename menjadi .env
menjadi
buka file .env dan cari baris kode berikut dan ubah.
# app.baseURL = ''
hilangkan tanda # dan sisiplan alamat website kalian.
app.baseURL = 'codeigniter4.test'
1. Konfigurasi basisdata
Untuk membuat halaman dinamis diperlukan basisdata, kalian dapat menggunakan mysql, buatlah basisdata ci4tutorial dan tambahkan tabel news,
CREATE TABLE news (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
title VARCHAR(128) NOT NULL,
slug VARCHAR(128) NOT NULL,
body TEXT NOT NULL,
PRIMARY KEY (id),
KEY slug (slug)
);
Strukturnya seperti gambar berikut
dan masukkan beberapa data
INSERT INTO news VALUES
(1,'Elvis sighted','elvis-sighted','Elvis was sighted at the Podunk internet cafe. It looked like he was writing a CodeIgniter app.'),
(2,'Say it isn\'t so!','say-it-isnt-so','Scientists conclude that some programmers have a sense of humor.'),
(3,'Caffeination, Yes!','caffeination-yes','World\'s largest coffee shop open onsite nested coffee shop for staff only.');
basisdata sudah jadi, sekarang sambungkan basisdata tersebut dengan codeigniter.
selanjutnya lakukan perubahan pada isi code .env cari baris kode
# database.default.hostname = localhost
# database.default.database = ci4
# database.default.username = root
# database.default.password = root
# database.default.DBDriver = MySQLi
# database.default.DBPrefix =
hilangkan tanda # pada awal code dan atur database yang akan digunakan
database.default.hostname = localhost
database.default.database = ci4tutorial
database.default.username = root
database.default.password =
database.default.DBDriver = MySQLi
database.default.DBPrefix =
atau sesuaikan dengan pengaturan database kalian.
2. konfigurasi model
pada saat ini aplikasi codeigniter telah terhubung dengan basisdata, namun query harus ditempatkan pada model untuk dapat digunakan, yaitu dengan membuat file baru dalam direktori app/Models beri nama NewsModel.php
dan kodenya adalah sebagai berikut
<?php
namespace App\Models;
use CodeIgniter\Model;
class NewsModel extends Model
{
protected $table = 'news';
public function getNews($slug = false)
{
if ($slug === false) {
return $this->findAll();
}
return $this->where(['slug' => $slug])->first();
}
}
kode tersebut dapat melakukan dua (2) query yaitu jika variable $slug bernilai false maka metode findAll() akan dikerjakan pada variable $table, namun jika $slug bernilai true maka akan mengerjakan metode first pada $table dengan mengerjakan where clause.
2. Buat halaman view
buat direktori baru pada app/Views dengan nama news dan dua (2) file dengan nama overview.php dan view.php.
kode pada overview.php dan view.php terhubung dengan controller yang akan dibuat nantinya,
a. overview.php
<h2><?= esc($title) ?></h2>
<?php if (! empty($news) && is_array($news)): ?>
<?php foreach ($news as $news_item): ?>
<h3><?= esc($news_item['title']) ?></h3>
<div class="main">
<?= esc($news_item['body']) ?>
</div>
<p><a href="/news/<?= esc($news_item['slug'], 'url') ?>">View article</a></p>
<?php endforeach ?>
<?php else: ?>
<h3>No News</h3>
<p>Unable to find any news for you.</p>
<?php endif ?>
a. view.php
<h2><?= esc($news['title']) ?></h2>
<p><?= esc($news['body']) ?></p>
3. Menampilkan berita
Setelah queri ditulis pada model dan view telah dibuat, model harus kaitkan ke view dan ditampilkan dalam item berita kepada pengguna. Ini bisa dilakukan di halaman controller yang akan dibuat. Buat controller baru dengan nama News.php dan tempatkan dalam direktori app/Controllers/
Isi kodenya
<?php
namespace App\Controllers;
use App\Models\NewsModel;
class News extends BaseController
{
public function index()
{
$model = model(NewsModel::class);
$data = [
'news' => $model->getNews(),
'title' => 'News archive',
];
echo view('news/overview', $data);
}
public function view($slug = null)
{
$model = model(NewsModel::class);
$data['news'] = $model->getNews($slug);
if (empty($data['news'])) {
throw new \CodeIgniter\Exceptions\PageNotFoundException('Cannot find the news item: ' . $slug);
}
$data['title'] = $data['news']['title'];
echo view('news/view', $data);
}
}
4. Routes
Secara defaul alamat url bekerja sebagai mana mestinya dengan menentukannya pada code controller, lihat gambar berikut.
namun codeigneter juga CodeIgniter dapat memetakan ulang pengendali URL. Aturan perutean ditentukan dalam file app/Config/ Routes .php
// We get a performance increase by specifying the default
// route since we don't have to scan directories.
$routes->get('/', 'Home::index');
$routes->get('news', 'News::index');
$routes->get('news/(:segment)', 'News::view/$1');
/*
perhatikan baris 35 dan 36 pada kode,
baris 35, ‘news’ bila di panggil pada browser maka akan mengembalikan nilai pada controller News Home function public index dengan kode ‘News::index.
Baris 36, $routes->get('news/(:segment)', 'News::view/$1');
'news/(:segment)' akan bekerja jika halaman browser news/(:segment) (:segmen) adalah kode pengganti untuk mengambil nilai $1 pada controller News function views, perhatikan function views public function view($slug = null) perhatikan argumen $slug nilai pada adalah pengganti dari variable $1 pada $routes. jika halaman view article pada halaman news di akses maka halaman slug dari masing masing data akan titampilkan pada halaman.