Membuat Item Berita¶
Anda sekarang tahu bagaimana Anda dapat membaca data dari database menggunakan
CodeIgniter, tapi Anda masih belum menulis informasi ke database. Di bagian
ini Anda akan memperluas controller news
dan model yang dibuat
sebelumnya untuk memasukkan fungsi ini.
Membuat Form¶
Untuk memasukkan data ke dalam database yang Anda butuhkan untuk membuat
form di mana Anda dapat masukan informasi yang akan disimpan. Ini berarti Anda
akan membutuhkan form dengan dua field, satu untuk judul dan satu untuk teks.
Anda akan mendapatkan slug dari judul kita di dalam model. Buat view baru
di application/views/news/create.php
.
<h2><?php echo $title; ?></h2>
<?php echo validation_errors(); ?>
<?php echo form_open('news/create'); ?>
<label for="title">Title</label>
<input type="input" name="title" /><br />
<label for="text">Text</label>
<textarea name="text"></textarea><br />
<input type="submit" name="submit" value="Create news item" />
</form>
Hanya ada dua hal di sini yang mungkin terlihat asing bagi Anda:
fungsi form_open()
dan fungsi validation_errors()
.
Fungsi yang pertama disediakan oleh form helper dan membuat elemen form dan menambahkan fungsi tambahan, seperti menambahkan field pencegahan CSRF yang tersembunyi. Fungsi yang terakhir digunakan untuk melaporkan kesalahan terkait dalam validasi form.
Kembali ke controller news
Anda. Anda akan melakukan dua hal di sini,
memeriksa apakah form tersebut di submit dan apakah data yang di submit
melewati aturan validasi. Anda akan menggunakan library validasi form untuk melakukan hal ini.
public function create()
{
$this->load->helper('form');
$this->load->library('form_validation');
$data['title'] = 'Create a news item';
$this->form_validation->set_rules('title', 'Title', 'required');
$this->form_validation->set_rules('text', 'Text', 'required');
if ($this->form_validation->run() === FALSE) {
$this->load->view('templates/header', $data);
$this->load->view('news/create');
$this->load->view('templates/footer');
} else {
$this->news_model->set_news();
$this->load->view('news/success');
}
}
Kode di atas menambahkan banyak fungsionalitas. Beberapa baris pertama memuat
form helper dan library validasi form. Setelah itu, aturan untuk validasi
form ditetapkan. Method set_rules()
mengambil tiga argumen; nama
field input, nama yang akan digunakan dalam pesan kesalahan, dan peraturan.
Dalam hal ini field judul dan teks yang diharuskan.
CodeIgniter memiliki library validasi form yang kuat seperti yang ditunjukkan di atas. Anda dapat membaca lebih lanjut tentang library ini disini.
Terus turun, Anda dapat melihat kondisi yang memeriksa apakah validasi form
berhasil. Jika tidak, form yang ditampilkan, jika di submit dan berhasil
melewati semua aturan, model ini dipanggil. Setelah itu, view dimuat untuk
menampilkan pesan sukses. Buat view di application/views/news/success.php
dan tulis pesan sukses.
Model¶
Satu-satunya hal yang tersisa adalah menulis sebuah method yang menulis data ke database. Anda akan menggunakan class Query Builder untuk memasukkan informasi dan menggunakan library Input untuk mendapatkan data yang diposting. Buka model yang dibuat sebelumnya dan tambahkan berikut ini:
public function set_news()
{
$this->load->helper('url');
$slug = url_title($this->input->post('title'), 'dash', TRUE);
$data = array(
'title' => $this->input->post('title'),
'slug' => $slug,
'text' => $this->input->post('text')
);
return $this->db->insert('news', $data);
}
Method baru ini mengurus memasukkan berita ke dalam database. Baris ketiga
berisi fungsi baru, url_title()
. Fungsi ini - disediakan oleh URL
helper - menghapus string yang Anda oper, mengganti
semua spasi dengan tanda hubung (-) dan memastikan semuanya dalam huruf kecil.
Hal ini membuat Anda mendapatkan slug yang bagus, sempurna untuk menciptakan
URI.
Mari kita lanjutkan dengan menyiapkan record yang akan dimasukkan
kemudian, dalam array $data
. Setiap elemen sesuai dengan kolom dalam
tabel database yang dibuat sebelumnya. Anda mungkin melihat method baru di
sini, yaitu method post()
library Input.
Method ini memastikan data sudah dibersihkan, melindungi Anda dari serangan
jahat dari orang lain. Library Input dimuat secara default. Akhirnya,
Anda memasukkan array $data
kita ke dalam database kita.
Routing¶
Sebelum Anda dapat mulai menambahkan item berita ke dalam aplikasi CodeIgniter
Anda, Anda harus menambahkan aturan tambahan di file config/routes.php
.
Pastikan file Anda berisi seperti berikut ini. Hal ini akan memastikan
CodeIgniter melihat ‘create‘ sebagai method bukan sebagai slug berita ini.
$route['news/create'] = 'news/create';
$route['news/(:any)'] = 'news/view/$1';
$route['news'] = 'news';
$route['(:any)'] = 'pages/view/$1';
$route['default_controller'] = 'pages/view';
Sekarang arahkan browser Anda ke development environment lokal Anda di mana
Anda menginstall CodeIgniter dan tambahkan index.php/news/create
ke URL.
Selamat, Anda baru saja membuat aplikasi CodeIgniter pertama Anda!
Tambahkan beberapa berita dan periksa halaman yang berbeda yang Anda buat.