Laravel 5 Ajax Request


Assalamu'alaikum, selamat berjumpa lagi pemirsa di blog. Tulisan ini hanya sekedar buat mengingatkan saya bagaimana cara Laravel me-request Ajax, berbeda dengan framework CI yang mudah sekali untuk mengakses Ajax, pada Laravel agak jelimet mungkin baru bagi saya atau alasan security dalam mengakses data, tapi saya suka seperti ini. :).

Seperti biasanya kalo saya membuat aplikasi ada saja data yang harus dicari menggunakan Ajax, kasus kali ini adalah mencari field satuan dari parameter nama barang, seperti contoh di gambar 

Jika  dipilih 1 (nama barang) akan muncul point 2 (satuan), ini di request menggunakan Ajax.
$("#m_barang_id").on('change',function(){
      var url = "/laravel_invontory/public/barang";
      var barang_id = $(this).val();

      $.get(url + '/' + barang_id, function (data) {
          $('#satuan').val(data.satuan);
      });
    });
Nama objek nya m_barang_id dengan event change, saya akan me-request pada url (url nya masih hardcode) dengan parameter barang_id, dari url ini kita mengakses file routes.php kenapa tidak ke BarangController, kita lihat di list route nya setelah di tambahkan class pada routes

karena apabila ada form lain yang ingin mengakses class ini bisa langsung ke routes
berikut adalah class routes nya
Route::get('/barang/{barang_id?}',function($barang_id){
    $data = Barang::findOrFail($barang_id)->Satuan;
    return Response::json($data);
});
Kasus berikutnya yaitu menyimpan data dengan Ajax seperti form di bawah ini, menyimpan data ke 2 table header dan detail.
ketika tekan tombol SAVE data akan tersimpan ke 2 table.
$("#save").click(function(e){
      var url = "/laravel_invontory/public/beli";
      $.ajaxSetup({
            headers: {
                'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')
            }
        })
        e.preventDefault();

        var formData = {
            kode: $('#kode').val(),
            tanggal: $('#tanggal').val(),
            m_supplier_id: $('#m_supplier_id').val(),
            m_barang_id: $('#m_barang_id').val(),
            qty: $('#qty').val(),
            harga_beli: $('#harga_beli').val(),
        }
        console.log(formData);
        $.ajax({
            type    : "POST",
            url     : url,
            data    : formData,
            dataType: 'json',
            success : function (data) {
                console.log(data);
            },
            error: function (data) {
                console.log('Error:', data);
            }
        });
    })
saya dapat referensi dari tutorials.kode-blog.com Database Laravel Eloquent Laravel.  Dari url diatas kita mengakses controller BeliController dengan method store. Seperti coding di bawah ini
public function store(Request $request)
    {
      $beli = new Beli;
      $beli->kode = $request->kode;
      $beli->tanggal = $request->tanggal;
      $beli->m_supplier_id = $request->m_supplier_id;

      $cari_beli = DB::table('t_h_beli')->where('kode',$request->kode)->first();

      if($cari_beli){
        $beli->save();
      }else{
        Beli::create($beli);
      }

      $cari_beli = DB::table('t_h_beli')->where('kode',$request->kode)->first();

      $beli_id = $cari_beli->id;

      $cari_detail = DB::table('t_d_beli')->where([
        ['t_h_beli_id',$beli_id],
        ['m_barang_id',$request->m_barang_id]
        ])->first();

      $beli_detail = array(
        't_h_beli_id' => $beli_id,
        'm_barang_id' => $request->m_barang_id,
        'qty'         => $request->qty,
        'harga_beli'  => $request->harga_beli
      );

      if($cari_detail){
        $beli_detail['qty'] = $cari_detail->qty+$request->qty;
        DB::table('t_d_beli')
            ->where([
              ['t_h_beli_id', $beli_id],
              ['m_barang_id', $request->m_barang_id]
              ])
            ->update($beli_detail);
        $pesan = 'Update Success';
      }else{
        DB::table('t_d_beli')
            ->insert($beli_detail);
        $pesan = 'Create Success';
      }

      $msg = array(
        'info' => 'Info',
        'msg' => $pesan
      );

      return json_encode($msg);
    }
tambahkan juga di form nya

kemudian kita cek keberhasilannya dengan firebugs.
karena dataType nya json maka kembalian (return) nya harus bentuk json. semoga bermanfaat 

Komentar