Rabu, 02 September 2015

Dasar YII2 : Menggunakan Form

Setelah kemarin kita sudah bisa membuat sebuah pesan sederhana, sekarang kita akan membuat sebuah form dan menggunakannya. Tapi belum menggunakan database lho ya.

Pertama, kita buat Model terlebih dahulu di folder models. Intiya, buat file FormAntri.php pada folder models, dan isi :

<?php

namespace app\models;

use Yii;
use yii\base\Model;

class FormAntri extends Model
{
  public $nama;
  public $email;
  
  public function rules()
  {
    return [
      [['nama', 'email'], 'required'],
      ['email', 'email'],
    ];
  }
}

namespace app\models anggap saja sebagai alamat atau path model yang kita buat.

Kita memerlukan Yii dan Model dari yii\base\ karena class model harus  meng-extends class Model.

$nama dan $email adalah property dari class  FormAntri.

Public function rules() bisa dianggap sebagai validasi. Dari perintah di atas, bisa dilihat kalau nama dan email harus di isi, serta email harus sesuai dengan format email.

Lanjut ke controller, buka SiteController.php dan buat public function actionAntri seperti berikut :

public function actionAntri()
{
  $model = new FormAntri();

  if ($model->load(Yii::$app->request->post()) && $model->validate()){
    return $this->render('antri-ok',['model' => $model]);
  }else{
    return $this->render('antri', ['model' => $model]);
  }
}
Di sini, kita membuat sebuah objek FormAntri. Jika ada permintaan pengiriman data menggunakan post dan sudah sesuai dengan validasi, maka akan diarahkan ke antri-ok dengan nilai model sesuai dengan $model. Selain itu, akan diarahkan ke antri, yang merupakan form tempat inputan.

Mari kita buat antri.php di folder site, dan isi dengan script seperti berikut :

<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
?>
<?php $form = ActiveForm::begin(); ?>

<?= $form->field($model, 'nama') ?>
<?= $form->field($model, 'email') ?>

<div class="form-group">
 <?= Html::submitButton('Ok', ['class' => 'btn btn-primary']) ?>
</div>

<?php ActiveForm::end(); ?>

Penggunaan yii\helpers\Html adalah untuk memudahkan mengidentifikasi kalau terjadi error.

Sedangkan yii\widget\ActiveForm diperlukan jika kita ingin membuat form inputan. Form inputan itu, harus berada di antara ActiveForm::begin dan ActiveForm::end.

<?= $form->field($model, 'nama') ?> berarti membuat sebuah inputan dengan nama 'nama'. Anggap saja <input type='text' name='nama'>.

<div class="form-group">
  <?= Html::submitButton('Ok ['class' => 'btn btn-primary']) ?>
</div>

Berarti membuat sebuah div dengan class form-group dengan isi sebuah tombol submit dengan value 'Ok' yang mempunyai class 'btn btn-primary' (anggap saja <input type='submit' value='Ok' class='btn btn-primary'>).

Setelah itu, buat antri-ok.php di folder site dan isi dengan script berikut:

<?php
use yii\helpers\Html;
?>
<p>Informasi yang sudah anda kirim adalah :</p>

<ul>
  <li><label>Nama</label>: <?= Html::encode($model->nama) ?></li>
  <li><label>Email</label>: <?= Html::encode($model->email) ?></li>
</ul>

antri-ok.php hanya akan menampilkan data yang sudah dikirimkan oleh $model.

lalu coba buka url http://localhost/namaProjek/web/index.php?r=site/antri maka nanti akan muncul tampilan seperti berikut:







Bagaimana? Jika ada kesulitan silahkan bertanya.

1 komentar: