Belajar Membuat Library Form Symfony


Library Form Symfony
Library Form Symfony

Berhubung masih banyak yang tanya-tanya tentang penggunaan Library Form Symfony, jadi mari kita bahas tuntas. Mudah-mudahan bisa bikin makin bingung 😀

Sebelum kita bahas lebih jauh tentang cara penggunaannya, kita coba diskusi kan sedikit hal yang filosofis, tentang alasan “kenapa harus menggunakan library form?”.

Penjelasan tentang materi ini bisa Anda dapatkan di tutorial symfony chapter 10 form. Penggunaan Library Form merupakan Best Practice, untuk kasus form yang memiliki properti dan komponen/instan yang sama dan akan dipakai diberbagai tempat. Kalaupun ada beberapa komponen dari form yang berbeda, maka akan bisa di tambahkan kemudian. Secara konsep, membuat Library Form pada symfony dilakukan dengan cara membuat class turunan sfForm. Kelas turunan itu (atau disebut juga library form buatan sendiri), memiliki beragam function yang ada pada class sfForm, seperti setWidgets(), setValidators(), setLabels(), dsb. Dengan begitu kita dapat membuat class form sendiri, yang telah di custom sesuai kebutuhan. Dan dapat digunakan secara berulang-ulang pada aktifitas (action) yang berbeda.

bagaimana cara penggunaannya?

Caranya sangat mudah, Anda cukup melakukan 3 langkah berikut ini.

1. Buat Class Turunan dari sfForm

Buat class baru di dalam libform, class tersebut merupakan class turunan dari class sfForm. Perlu diingat, membuat file class di PHP, harus sama antara nama file nya dengan nama class yang ada didalam file tersebut. Contoh berikut, kita akan membuat Library FormPegawai, dengan nama class FromPegawai, dan nama file FormPegawai.class.php.

class FormPegawai extends sfForm
{
 public function configure()
 {
  /// deklarasi widget
  $this->setWidgets(array(
   'kdpeg' => new sfWidgetFormInputText(array('label'=>'Kode.Peg')),
   'nama' => new sfWidgetFormInputText(array(
          'label' => 'Nama Pegawai',
	   )),
   'gender' => new sfWidgetFormChoice(array(
          'label'=>'Jenis Kelamin',
 	  'choices'=> array('pria','wanita'),
	  'expanded'=>true,
	   )),
   'tmplahir' => new sfWidgetFormInputText(array('label'=>'Tempat')),
   'tgllahir' => new sfWidgetFormDate(array(
	 'label'=>'Tanggal Lahir',
	 'years'=>array_combine(range(1950,1990)))),
   'alamat' => new sfWidgetFormTextarea(),
   'telp' => new sfWidgetFormInputText(array('label'=>'No.Telepon')),
   'email' => new sfWidgetFormInputText(array('label'=>'Email')),
   'kahlian' => new sfWidgetFormChoice(array(
         'label'=>'Bidang Keahlian',
	 'choices'=>array(
	    'akuntansi','perpajakan','marketing', 'komputer',
	    'database', 'multimedia', 'jaringan', 'periklanan'),
	 'expanded'=>true,
	 'multiple'=>true,
	 )),
    'statuspeg' => new sfWidgetFormChoice(array(
         'label' => 'Status Pegawai',
	 'choices' => array('tetap','honorer'),
	 )),
 ));

 //deklarasi validator
  $this->setValidators(array(
    'kdpeg' => new sfValidatorString(array(
	    'max_length' => 5,
 	    'min_length' => 5,
	  ),array('max_length'=>'kapanjangan teuing')),
    'nama' => new sfValidatorString(array(
	    'min_length' => 3,
 	    'max_length' => 100,
	   )),
    'gender' => new sfValidatorString(),
    'tmplahir' => new sfValidatorString(array(
	    'max_length' => 50,
	   )),
    'tgllahir' => new sfValidatorDate(),
    'alamat' => new sfValidatorString(),
    'telp' => new sfValidatorAnd(array(
      new sfValidatorString(array('max_length'=>13,'min_length'=>5)),
      new sfValidatorNumber(),
        )),
    'email' => new sfValidatorEmail(),
    'kahlian' => new sfValidatorString(),
    'statuspeg' => new sfValidatorString(),
	));

 //deklarasi nama form
  $this->getWidgetSchema()->setNameFormat('pegawai[%s]');

  }
}

Anda tidak perlu bingung dan pusing melihat code diatas. File class FormPegawai diatas, hanya terdiri dari 3 bagian utama yang tertulis dalam methods configure,

  1. Deklarasi field Widget yang akan digunakan
  2. Deklarasi Validator, beserta syarat-syarat yang diinginkan.
  3. Deklarasi nameFormat untuk form tersebut, untuk mempermudah pemanggilan

sekali lagi penting untuk diingat, ketiga hal tersebut dilakukan didalam methods configure(),  pada class turunan dari sfForm. Sampai pada tahap ini, Anda telah berhasil membuat Library Form sendiri dan siap untuk digunakan.

2. Pakai Class Library Form yang telah dibuat.

Selanjutnya Anda bisa langsung menggunakan Library Form yang sudah dibuat, seperti menggunakan sfForm biasa. yaitu dengan cara mendeklarasikan nya pada action class.

Pada contoh berikut, dibuat methods executeEditpeg pada action.class, yang berisi deklarasi class FormPegawai().

public function executeEditpeg(sfWebRequest $request)
{
  //buat object dari class FormPegawai
   $this->formeditpegawai = new FormPegawai();
}

Artinya, kita buat variable objek formeditpegawai, yang diisikan oleh class dari FormPegawai. Karena variable object diawali this, maka nantinya variable ini akan dapat diakses pada file editpegSuccess (file template) .

3. Tampilkan Object Class Form yang telah dibuat.

Langkah terakhir (seperti biasa), tampilkan object form yang telah dideklarasikan pada action.class. Cara menampilkan nya adalah dengan memanggil object tersebut di template (dari action.class tersebut). Pada contoh diatas, kita punya action.class untuk method executeEditpeg, maka kita akan punya editpegSuccess.php sebagai template nya. Dan berikut cara penggunaan form di template editpegSuccess.php.

<h2>Halaman Edit Pegawai</h2>
<?php echo $formeditpegawai->renderFormTag('cekform') ?>
<table id="tombol" >
  <?php echo $formeditpegawai; ?>
 <tr> 
  <td colspan="2" align="right"> 
    <input type="submit" name="name" value="Simpan" />  </td>
 </tr>
</table>
</form>

Seperti yang pernah kita bahas sebelumnya, ketika menampilkan object Form secara default (seperti contoh diatas), maka tampilan yang akan muncul berupa kolom-baris table. Jadi kita perlu menambahkan script table di awal dan akhir nya. Jangan lupa tambahkan tag form html (pada contoh diatas menggunakan function renderFormTag) dan menambahkan tombol submit.

Untuk penggunaan Form berulang2 pada tempat yang lain juga akan sama caranya. Anda cukup membuat object dari kelas FormPegawai(). Dan selanjutnya silahkan dimodifikasi sesuai kebutuhan.

Gimana.. gampang kah?? pastinya….

selamat mencoba. 😀

 

 

 


5 responses to “Belajar Membuat Library Form Symfony”

Leave a Reply

Your email address will not be published. Required fields are marked *