Add onChange on DropDown CakePHP


Ada sekitar 2 hari kurang, tuk googling bagaimana didalam dropdown pada saat onChange akan memanggil suatu fungsi didalam controller dan mengembalikan suatu value kedalam view. Kemudian didalam view tersebut, value tersebut akan diproses. OnChange ada kaitannya dengan javascript, jadi didalam view cakephp kita akan menambahkan script onChange

Skenarionya adalah sebagai berikut : Saya mempunyai table cuti dengan nama outs, salah satu fieldnya yaitu employee_id. Employee_id ada kaitannya dengan table Employees (pegawai). Form input employee_id berbentuk dropdown, dimana yang saya inginkan adalah pada saat onChange akan menampilkan sisa cuti dari suatu pegawai. Step-by-stepnya kurang lebih seperti berikut :

1. Didalam script yang akan ditampilkan dibawah, perhatikan secara seksama script yang dibold

2. Saya mempunyai 1 buah controller dengan nama OutsController, pada saat fungsi add() inilah akan memproses onChange didalam view add.ctp

<?php
class OutsController extends AppController {
    //...
    //another function goes here...
    //...

    function add() {
        if (isset($_POST['save'])) {
            $is_save = "1";
        } else {
            $is_save = "0";
        }

        if (!empty($this->data)) {
            if ($is_save == "1") {
                //save data...
                $this->Out->create();
                $lamaRencCuti = $this->data['Out']['lama_cuti'];
                $sisaCuti     = $this->getSisaCuti($this->data);
                $this->set("sisa_cuti",$sisaCuti);
                if ($lamaRencCuti > $sisaCuti) {
                    $this->Session->setFlash(__('Data cuti gagal disimpan, jatah cuti tinggal '.$sisaCuti.
                    " hari", true));
                } else {
                    if ($this->Out->save($this->data)) {
                        $this->Session->setFlash(__('Data Cuti berhasil ditambahkan', true));
                        $this->redirect(array('action' => 'index'));
                    } else {
                        $this->Session->setFlash(__('Data Cuti gagal disimpan, harap coba kembali', true));
                    }
                }
           } else {
                //Proses onChange dropdown...
                $sisaCuti = $this->getSisaCuti($this->data);
                $this->set("sisa_cuti",$sisaCuti);
            }
        }
        $employees = $this->Out->Employee->find('list');
        $this->set(compact('employees'));
    }

    function getSisaCuti($data){
        //...
        //your's script
        //...

        return $sisaCuti;
    }

    //...
    //another function goes here...
    //...
}
?>

3. Kemudian didalam add.ctp kepunyaan OutsController kita tambahkan onChange. Scriptnya bisa kek dibawah ini : ….

<div>
<?php echo $this->Form->create('Out');?>
    <fieldset>
         <legend><?php __('Tambah Data Cuti'); ?></legend>
        <?php
            //...
            //Another form input goes here
            //...

            if (isset($sisa_cuti)) {
            } else {
                $sisa_cuti = 0;
            }
            echo $this->Form->input('employee_id',array( 'label' => 'Pegawai',"onChange"=>
            "this.form.submit()"));
            echo "&nbsp;&nbsp;Sisa Cuti : ".$sisa_cuti." hari<br/><br/>";

            //...
            //Another form input goes here
            //...
        ?>
    </fieldset>
<?php echo $this->Form->end( array( 'label' => 'Submit', 'value' => 'save','name'=>'save' ) ); ?>
</div>
<div>
    <h3><?php __('Actions'); ?></h3>
    <ul>
        <li><?php echo $this->Html->link(__('List Cuti', true), array('action' => 'index'));?></li>
    </ul>
</div>

Salah satu sumber yang mungkin bisa membantu bisa dilihat di link ini. Still confusing?? let me know..maybe i can help😀.

2 thoughts on “Add onChange on DropDown CakePHP

  1. still confuse mas,,
    saya punya aplikasi yg didalamnya ada menu list dropdown, begitu di pilih listnya maka akan muncul kalimat yg didalamnya ada sebuah text field untuk input data….
    nah, itu bagaimana cara membuatnya? apakah hal itu mungkin untuk dilakukan???
    terima kasih sebelumnya,,
    salam,,,

    • Mungkin maksud mas Noe itu kayak semacam pencarian didalam dropdown ya? Pernah liat yg kayak gitu, tp saya belum pernah nyoba pake cakephp.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s