Codeton
  • 🖌️Getting started
  • INTRODUCTION
    • Instalasi
    • Perintah Dasar
    • Opsi generate
  • First Running
    • Edit Main Table
    • Konfigurasi Header Column
    • Konfigurasi Data List
    • Konfigurasi Column Search
    • Run
  • Fungsi Filtering
  • Config Table Header
  • Add Data & Elemen ke page-index
  • Komponen Form
    • Komponen Input
    • Komponen Select
    • Input date
    • Date range Max Today
    • Date range Min Today
  • View Response
  • Buttons
Powered by GitBook
On this page
  • Berikut adalah perbedaan dengan dan tanpa --modal
  1. INTRODUCTION

Opsi generate

Terdapat pilihan generate yaitu

php artisan proton:generate [folder] [file] --modal

Opsi generate --modal digunakan untuk meng-generate kode terutama pada form insert dan update untuk menggunakan modal bootstrap. selain itu ada juga perbedaan kode di file [file]Controller dan [file]ListView antara opsi --modal dengan yang standar sebelumnya

Berikut adalah perbedaan dengan dan tanpa --modal

  1. Perbedaan pengecekan request ajax pada method public function Create(Request $request) dan public function Edit(Request $request) di file [file]Controller.php. Berikut kode perbedaanya :

//dengan proses check ajax
if (!$request->ajax() || !$this->acl($this->controller_path)) {
    abort(401);
}
//tanpa proses check ajax
if (!$request->ajax() || !$this->acl($this->controller_path)) {
    abort(401);
}

Meskipun terdapat pengecekan ajax, tetapi saat pengembangan dirasa tidak perlu pengecekan ajax artinya langsung menggunakan form redirect page, maka tinggal hapus saja pengecekannya. Tidak masalah.

  1. Perbedaan pada default btn_create di [file]ListView.php, fungsi TableView().

// penggunaan button helper untuk memanggil form modal
'btn_create' => ButtonHelper::button_modal(url($this->controller_path.'/create')),
// btn_create menggunakan Button helper yang langsung redirect page
'btn_create' => ButtonHelper::href_redirect(
                                target      : url($this->controller_path . '/create'), 
                                btn_class   : 'btn-sm btn-outline-primary', 
                                icon        : 'plus', text: 'Create'
                            ),

By default, btn_create berada di dalam fungsi TableView() di file [file]ListView.php

  1. Perbedaan pada btn_edit di set_data_before_send() pada [file]ListView.php. Hampir sama seperti diatas yaitu terkait pemanggilan modal atau redirect page

// penggunaan button helper untuk memanggil form modal edit
'btn_edit'          => (!$this->acl($this->controller_path)) ? '-' :ButtonHelper::btn_detail_modal(
                    url($this->controller_path.'/detail/'.$key->uuid),'#modalForm'
                ),
// menggunakan Button helper yang langsung redirect page
'btn_edit' => (!$this->acl($this->controller_path)) ? '-' : ButtonHelper::href_redirect(
                    target      : url($this->controller_path . '/detail/' . $key->uuid),
                    btn_class   : 'btn-sm btn-light border rounded',
                    icon        : 'expand'
                ),

  1. perbedaan pada form.blade.php di resources/views/[file] yang digenerate

// Some code
@php
    $header_form = @$type == 'create' ? 'New' : 'Edit';
    $btn_submit = @$type == 'create' ? 'Save' : 'Update';
@endphp
@section('form-field')
    <input class="id_reference" type="hidden" name="id_reference" value="{{ @$results->id}}">
    <x-select label="Source" name="option" search width="3">
            <option value="0" {{@$results->option == 0 ? 'selected':''}}>Kosong</option>
            <option value="1" {{@$results->option == 1 ? 'selected':''}}>Satu</option>
    </x-select>
    <x-input label="Name" width="3" name="name" placeholder="Max 200" required value="{{@$results->name}}"/>
    <x-input label="Code" width="3" name="code" placeholder="Max 200" required value="{{@$results->code}}"/>
    <!-- Lihat Komponen lengkap pada dokumentasi input -->
    @if(@$results) //opsional
    <hr>
    <div class="form-group row">
        <label class="col-md-3 control-label">Insert</label>
        <div class="col-md-9 bg-light">
            <small>{{@$results->user_insert}} <br>{{date('d-m-Y H:i',strtotime(@$results->dt_insert))}}</small>
        </div>
    </div>
    @endif

@endsection
@section('form-js')
    <script type="text/javascript">
        //pastikan tidak ada variable, id, class yang conflict dengan variable page-index
        //yang dipake js di page-index
        jQuery(document).ready(function(){
            $("select").selectpicker();
            // Load fungsi js untuk form modal lainnya

            dynamic_url = controller_path+"/{{@$type == 'create' ? 'store' : 'update'}}";
            $('#formData').validator();
            hideFullLoader();
        });
        // tambahan fungsi js untuk form modal special case, tapi ati2 dengan js yang ada di page-index.
    </script>
@endsection
@include('layouts.form.simple-modal')
htm
// Some code
@extends('layouts.blank-frame')
@php
$modal_size = 'modal-md';
$section = 'Form Create ';
@endphp
@section('title',$section)
@section('blank-content')
<h4 class="mt-5 col-lg-8">Create</h4>
<hr>
<form id="formData" method="post" class="col-lg-8">
    @csrf
    <input class="id_reference" type="hidden" name="id_reference" value="{{ @$results->uuid}}">
    <x-input label="Name" width="3" name="name" placeholder="Max 200" required value="{{@$results->name}}" />
    <x-input label="Code" width="3" name="code" placeholder="Max 200" required value="{{@$results->code}}" />
    <x-select label="Source" name="option" search width="3" required>
        <option value="0" {{@$results->option == 0 ? 'selected':''}}>Kosong</option>
        <option value="1" {{@$results->option == 1 ? 'selected':''}}>Satu</option>
    </x-select>
    <div class="col">
        <div class="form-check row col-md-9 offset-md-3">
            <input class="form-check-input" type="checkbox" value="">
            <label class="form-check-label font-weight-bold text-primary">
                Checkbox
            </label>
        </div>
    </div>
    <hr>
    <div class="alert alert-danger print-error-msg" style="display:none">
        <ul></ul>
    </div>
    <div class="form-group row mt-2">
        <div class="col-md-9 offset-md-3">
            <div class="d-flex">
                <button type="submit" class="btn btn-primary">{{@$type == 'create' ? 'Simpan Data' : 'Update Data'
                    }}</button>
                @if(@$backlink !== null)
                <a href="{{url($backlink)}}" class="btn ml-2 btn-outline-secondary">Kembali</a>
                @else
                <a href="{{url($controller_path)}}" class="btn ml-2 btn-outline-secondary">Cancel</a>
                @endif
            </div>
        </div>
    </div>
</form>
@endsection
@section('extend-js')
<script type="text/javascript">
    let dynamic_url = controller_path + '/{{@$type == "create" ? "store" : "update"}}';
    var modal_form = false;
    jQuery(document).ready(function () {
        $('#formData').on('submit', function (e) {
            e.preventDefault(); // prevent pengiriman form bisasa
            ajaxFormSubmit();
        });
        $('#formData input').on('keypress', function (e) {
            if (e.which === 13) { // 13 adalah kode tombol "Enter"
                e.preventDefault(); // prevent pengiriman form bisasa
                // ajaxFormSubmit();
            }
        });

        $('#formData').validator();
        hideFullLoader()

    });
    //feel free nulis js
</script>
@endsection

Penggunaan opsi --modal biasanya dipakai jika transaksi / operasi yang simple dan tidak menggunakan banyak javascript

PreviousPerintah DasarNextFirst Running

Last updated 1 year ago