Posted in Yii
<?php class Pegawai extends CActiveRecord { public static function model($className = __CLASS__) { return parent::model($className); } public function tableName() { return 'pegawai'; } public function rules() { return array( array('nik, nama, no_telp, status, alamat', 'required', 'message' => '{attribute} tidak boleh kosong.'), ); } public function attributeLabels() { return array( 'nik' => 'NIK', 'nama' => 'Nama', 'no_telp' => 'No Telp', 'status' => 'Status', 'alamat' => 'Alamat' ); } }Selanjutnya, untuk bagian Controller, buat file di folder Controller dengan nama PegawaiController.php, dan ini adalah kode nya:
class PegawaiController extends Controller { public function actionPegawai() { $data = Pegawai::model()->findAll(); $this->render('pegawai', array('data' => $data)); } public function actionTambahPegawai() { $modelPegawai = new Pegawai; if (isset($_POST['Pegawai'])) { $modelPegawai->nama = $_POST['Pegawai']['nama']; $modelPegawai->no_telp = $_POST['Pegawai']['no_telp']; $modelPegawai->status = $_POST['Pegawai']['status']; $modelPegawai->alamat = $_POST['Pegawai']['alamat']; if ($modelPegawai->save()) { $this->redirect(array('Pegawai')); } } $this->render('tambahpegawai', array('model' => $modelPegawai)); } public function actionEditPegawai($nik) { $modelPegawai = Pegawai::model()->findByPk($nik); if (isset($_POST['Pegawai'])) { $modelPegawai->nama = $_POST['Pegawai']['nama']; $modelPegawai->no_telp = $_POST['Pegawai']['no_telp']; $modelPegawai->status = $_POST['Pegawai']['status']; $modelPegawai->alamat = $_POST['Pegawai']['alamat']; if ($modelPegawai->save()) { $this->redirect(array('pegawai')); } } $this->render('editpegawai', array('model' => $modelPegawai)); } public function actionHapusPegawai($nik) { if (Pegawai::model()->deleteByPk($nik)) { $this->redirect(array('pegawai')); } else { throw new CHttpException(404, 'Data gagal dihapus'); } }Dan untuk bagian view, terdapat tiga file, yaitu tambahpegawai.php, pegawai.php, dan editpegawai.php Pertama kita buat terlebih dahulu pegawai.php, file ini bertindak sebagai bagian "index", ketika kita menggunakan fungsi generator di Gii biasanya fungsi di Controller yang digunakan adalah actionIndex(), karena kita buatnya manual, jadi ya ini file view untuk bagian actionPegawai:
<div class="sub-content"> <h3>Pegawai</h3> <div class="text-right right"> <?php echo CHtml::link('Tambah Pegawai', array('pegawai/tambahpegawai')); ?> </div> <table class="table table-bordered"> <thead> <tr> <th>NIK</th> <th>Nama</th> <th>No Telp</th> <th>Status</th> <th>Alamat</th> <th>Action</th> </tr> </thead> <tbody> <?php foreach ($data as $model) : ?> <tr> <td><?php echo $model->nik; ?></td> <td><?php echo $model->nama; ?></td> <td><?php echo $model->no_telp; ?></td> <td><?php echo $model->status; ?></td> <td><?php echo $model->alamat; ?></td> <td> <?php echo CHtml::link(CHtml::encode("Edit"), array('editpegawai', 'pegawai' => $model->nik)); ?> | <?php echo CHtml::link(CHtml::encode("Delete"), array('hapuspegawai', 'pegawai' => $model->nik)); ?> </td> </tr> <?php endforeach; ?> </tbody> </table> </div>Kemudian kita harus membuat file tambahpegawai.php di bagian View yang berfungsi sebagai interface form untuk diinput.
<div class="sub-content"> <h2>Tambah Pegawai</h2> <?php echo CHtml::beginForm(array('pegawai/tambahpegawai')); ?> <div> <?php echo CHtml::activeLabel($model, 'nik'); ?> <?php echo CHtml::activeTextField($model, "nik", ""); ?> </div> <div> <?php echo CHtml::activeLabel($model, 'nama'); ?> <?php echo CHtml::activeTextField($model, "nama", ""); ?> </div> <div> <?php echo CHtml::activeLabel($model, 'no_telp'); ?> <?php echo CHtml::activeTextField($model, "no_telp", ""); ?> </div> <div> <?php echo CHtml::activeLabel($model, 'status'); ?> <?php echo CHtml::activeDropDownList($model, "status", array('Tetap' => 'Tetap', 'Kontrak' => 'Kontrak'), array('empty' => '- Pilih Status Pegawai -')) ?> </div> <div> <?php echo CHtml::activeLabel($model, 'alamat'); ?> <?php echo CHtml::activeTextField($model, "alamat", ""); ?> </div> <div> <?php echo CHtml::submitButton('Submit'); ?> <?php echo CHtml::endForm(); ?> </div> </div>Terakhir, kita buat juga file editpegawai.php, kodenya mirip seperti file tambahpegawai.ph, hanya berbeda beberapa baris
<div class="sub-content"> <h2>Edit Pegawai</h2> <?php echo CHtml::beginForm(array('editpegawai', 'pegawai'=>$model->nik)); ?> <div> <?php echo CHtml::activeLabel($model, 'nama'); ?> <?php echo CHtml::activeTextField($model, "nama", ""); ?> </div> <div> <?php echo CHtml::activeLabel($model, 'no_telp'); ?> <?php echo CHtml::activeTextField($model, "no_telp", ""); ?> </div> <div> <?php echo CHtml::activeLabel($model, 'status'); ?> <?php echo CHtml::activeDropDownList($model, "status", array('Tetap' => 'Tetap', 'Kontrak' => 'Kontrak'), array('empty' => '- Pilih Status Pegawai -')) ?> </div> <div> <?php echo CHtml::activeLabel($model, 'alamat'); ?> <?php echo CHtml::activeTextField($model, "alamat", ""); ?> </div> <div> <?php echo CHtml::submitButton('Submit'); ?> <?php echo CHtml::endForm(); ?> </div> </div>Nah, sekarang semua kode telah lengkap, silakan dicoba di localhost/projectAnda/index.php?r=pegawai Jika sudah berhasil, selamat buat Anda. Jika belum berhasil, silakan cari-cari tahu kesalahannya dimana :-D Oh iya, perlu diketahui bahwa kode di atas sebenarnya menurut saya tidak efisien, kenapa? karena di Yii ada cara yang lebih bagus ketika membuat CRUD. Nantikan tutorial selanjutnya, atau silakan coba-coba sendiri. Sekian tutorial membuat crud tanpa menggunakan Gii, semoga bermanfaat.