Membuat form dengan LaravelCollective di laravel 5.2












Laravel Collective adalah salah satu component dari framework laravel, sayangnya component tersebut tidak bertahan lama. Sejak laravel 5 muncul, component laravel collective tidak lagi menjadi bagian dari component inti laravel. Tapi, bagi pengguna laravel 4 yang hijrah ke laravel 5 dan masih belum move on dan terpukau terhadap keajaiban laravel collective atau pengguna laravel 5 ke atas yang mau mencicipi laravel collective. Tenang aja, kalian masih bisa menggunakan laravel collecive secara terpisah alias kalian harus memasang package laravel collective dan bisa melihat documentasinnya di laravelcollective.com.

Let's get to the bussiness, gubrak .... hehehe !!! Pertama-tama kalian siapkan dulu project laravel versi terbaru, versi yang digunakan pada saat penulis publish artikel ini masih laravel 5.2.

Persiapan

Pertama
Edit composer.json dan tambahkan laravelcollective/html di bagian require.
"require": {
    "laravelcollective/html": "5.2.*"
}
Berikutnya update composer dari terminal.
<your_path>:~/<your_project_folder>$ composer update
Berikutnya tambahkan provider baru ke array providers di config/app.php.
'providers' => [
    // ...
    'Collective\Html\HtmlServiceProvider::class',
    // ...
],
Dan yang terakhir tambahkan class-class baru ke array classes di file yang sama.
'aliases' => [
    // ...
    'Form' => 'Collective\Html\FormFacade::class',
    'Html' => 'Collective\Html\HtmlFacade::class',
    // ...
],
Kedua
Buat controller baru dengan nama terserah kalian ... Hahahaha ...
<your_path>:~/<your_project_folder>$ php artisan make:controller CollectiveController
Buka file controller yang barusan kalian buat dan tambahkan baris kode seperti dibawah ini.
public function index()
{
    return view('collective');
}
Kemudian edit routing di app/Http/routes.php dan tambahkan routing seperti baris kode dibawah ini.
Route::get('collective', [
    'uses' => 'CollectiveController@index',
]);
Ketiga
Buatlah file baru di dalam resource/views/ dengan nama terserah kalian (lagi???) ... hahaha ..., tapi karena dicontroller kita memanggil file dengan nama collective jadi untuk sementara nama file yang saya buat seperti yang ada di controller. Kemuadian isikan dengan baris kode seperti dibawah ini.
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Laravel Collective</title>
        <!-- Latest compiled and minified CSS -->
        <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
        <!-- jQuery library -->
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
        <!-- Latest compiled JavaScript -->
        <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
    </head>
    <body>
        <div class="container">
            <div class="row">
                <div class="col-md-6 col-md-offset-3">
                    
                </div>
            </div>
        </div>
    </body>
</html>
Laravel Collective Form

Untuk membuat sebuah form dengan laravel collective harus dimulai dengan pembukaan sebuah form.
{!! Form::open(array('url' => 'foo/bar')) !!}
    //
{!! Form::close() !!}
Seperti halnya tag form html biasa, laravel collective juga bisa kita taruh seperti method, class dan lain-lainnya.

Secara default method yang digunakan laravel collective adalah method POST. Lihat contoh penggunaannya seperti baris kode dibawah ini.
{!! Form::open(array('url' => 'foo/bar', 'method' => 'put')) !!}
Contoh lengkap penggunaan laravel collective dan letakkan baris kode dibawah ini kedalam file view yang sudah kalian buat tadi.
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Laravel Collective</title>
        <!-- Latest compiled and minified CSS -->
        <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
        <style>
            .form-horizontal {
                margin-top: 50px;
            }
        </style>

    </head>
    <body>
        <div class="container">
            <div class="row">
                <div class="col-md-6 col-md-offset-2">
                    {!! Form::open(array('class' => 'form-horizontal', 'role' => 'form')) !!}
                        <div class="form-group">
                            {!! Form::label('name', 'Name', ['class' => 'control-label col-md-3']) !!}
                            <div class="col-md-9">
                                {!! Form::text('name', null, ['class' => 'form-control', 'placeholder' => 'write your name']) !!}
                            </div>
                        </div>

                        <div class="form-group">
                            {!! Form::label('email', 'Email', ['class' => 'control-label col-md-3']) !!}
                            <div class="col-md-9">
                                {!! Form::email('email', null,  ['class' => 'form-control', 'placeholder' => 'example@email.com']) !!}                                
                            </div>
                        </div>

                        <div class="form-group">
                            {!! Form::label('password', 'Password', ['class' => 'control-label col-md-3']) !!}
                            <div class="col-md-9">
                                {!! Form::password('password', ['class' => 'form-control', 'placeholder' => 'write your password']) !!}
                            </div>
                        </div>

                        <div class="form-group">
                            {!! Form::label('date', 'Date', ['class' => 'control-label col-md-3']) !!}
                            <div class="col-md-9">
                                {!!Form::date('name', \Carbon\Carbon::now(), ['class' => 'form-control'])!!}
                            </div>
                        </div>

                        <div class="form-group">
                            {!! Form::label('gender', 'Gender', ['class' => 'control-label col-md-3']) !!}
                            <div class="col-md-9">
                                <div class="radio">
                                    <label>{!! Form::radio('gender', 'Male', true) !!} Male</label>
                                </div>
                                <div class="radio">
                                    <label>{!! Form::radio('gender', 'Female') !!} Female</label>
                                </div>
                            </div>
                        </div>

                        <div class="form-group">
                            {!! Form::label('hobby', 'Hobby', ['class' => 'control-label col-md-3']) !!}
                            <div class="col-md-9">
                                <div class="checkbox">
                                    <label>{!! Form::checkbox('hobby') !!} This is my hobby</label>
                                </div>
                                <div class="checkbox">
                                    <label>{!! Form::checkbox('hobby') !!} The other hobby</label>
                                </div>
                                <div class="checkbox">
                                    <label>{!! Form::checkbox('hobby') !!} The other hobby</label>
                                </div>
                                <div class="checkbox">
                                    <label>{!! Form::checkbox('hobby') !!} The other hobby</label>
                                </div>
                            </div>
                        </div>

                        <div class="form-group">
                            {!! Form::label('size','Size' , ['class' => 'control-label col-md-3']) !!}
                            <div class="col-md-9">
                                {!! Form::select('size', array('L' => 'Large', 'S' => 'Small'), null, ['class' => 'form-control','placeholder' => 'Pick a size...']) !!}
                            </div>
                        </div>

                        <div class="form-group">
                            {!! Form::label('file','File' , ['class' => 'control-label col-md-3']) !!}
                            <div class="col-md-9">
                                {!! Form::file('image', ['class' => 'form-control']) !!}
                            </div>
                        </div>

                        <div class="form-group">
                            <div class="col-md-9 col-md-offset-3">
                                {!! Form::submit('Click Me!', ['class' => 'btn btn-primary']) !!}
                            </div>
                        </div>
                    {!! Form::close() !!}
                </div>
            </div>
        </div>

        <!-- jQuery library -->
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
        <!-- Latest compiled JavaScript -->
        <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
    </body>
</html>

Membuat upload image dengan laravel 5.2 + MySQL
















Image atau gambar sangatlah penting peranannya untuk sebuah website tertentu, contohnya website yang berisi berita-berita, artikel-artikel, tutorial-tutorial atau website yang hanya berisi kumpulan-kumpulan gambar.
Tutorial sebelumnya kita sudah belajar membuat CRUD sederhana dengan Laravel 5.2. Pada kesempatan kali ini kita akan mencoba membuat upload image dengan Laravel 5.2.

Pertama

Siapkan terlebih dahulu project laravel kalian, kemudian kalian buat migrasi untuk tabel images. File migrasi bisa kalian temukan di databse/migrations/{nama_file_migrasi} dan isikan baris kode seperti dibawah ini.
public function up()
{
    Schema::create('images', function (Blueprint $table) {
        $table->increments('id');
        $table->string('title');
        $table->string('photo');
        $table->timestamps();
    });
}
Ketikan perintah php artisan migrate di command line.
<your_path>:~/laravel$ php artisan migrate
Kedua

Tambahkan baris kode berikut di routing kalian masing-masing
Route::group(['middleware' => ['web']], function () {
    Route::resource('images', 'ImageController');
});
Ketikan perintah berikut untuk melihat routing list project kita.
<your_path>:~/laravel$ php artisan route:list
Ketiga

Buatlah file controller dengan nama ImageController.
<your_path>:~/laravel$ php artisan make:controller ImageController
Kemudian ketikan baris kode berikut di file controller yang barusan sudah kalian buat.
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\Image;

class ImageController extends Controller
{

    public function index()
    {
        $images = Image::all();
        return view('images.index')->with('images', $images);
    }

    public function create()
    {
        return view('images.create');
    }

    public function store(Request $request)
    {
        $this->validate($request, [
            'tittle' => ['required', 'min:5'],
            'photo' => ['mimes:jpg,jpeg,JPEG,png,gif,bmp', 'max:2024'],
        ]);

        $data = $request->all();

        $photo = $request->file('photo')->getClientOriginalName();
        $destination = base_path() . '/public/uploads';
        $request->file('photo')->move($destination, $photo);

        $data['photo'] = $photo;

        Image::create($data);

        return redirect()->route('images.index')->with('message', 'Image Saved');
    }
}
Keempat

Berikutnya kita harus mempersiapkan view untuk upload imagenya. Buatlah folder layouts di resource/views/layouts, kemudian kalian buat juga file baru bernama main.blade.php dan navbar.blade.php didalamnya.

Masukkan baris kode berikut kedalam file main.blade.php.
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>Image Upload</title>
        <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
        <link href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet">
    </head>
    <body>
        @include('layouts.navbar')
        <div class="container">
            <div class="row">
                <div class="col-md-12">
                    @if (session('message'))
                        <div class="alert alert-success">
                            {{ session('message') }}
                        </div>
                    @endif
                    @yield('content')
                </div>
            </div>
        </div>

        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
        <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
    </body>
</html>
Kemudian kalian masukkan baris kode dibawah ini untuk file navbar.blade.php.
<nav class="navbar navbar-default navbar-custom">
    <div class="container-fluid">
        <!-- Brand and toggle get grouped for better mobile display -->
        <div class="navbar-header">
            <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
            <a class="navbar-brand" href="{{ url('/') }}">My Gallery</a>
        </div>

        <!-- Collect the nav links, forms, and other content for toggling -->
        <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
            <div class="nav navbar-nav navbar-right navbar-btn">
                <a href="{{ route('images.create') }}" class="btn btn-default">
                    <i class="fa fa-plus"></i> Add Image
                </a>
                <!-- <button type="button" class="btn btn-default" data-toggle="modal" data-target="#myModal">Add Image</button> -->
            </div>
        </div><!-- /.navbar-collapse -->
    </div><!-- /.container-fluid -->
</nav>
Kelima

Tambahkan folder images di resource/views/images dan buatlah dua buah file dengan nama masing-masing index.blade.php dan create.blade.php didalam folder tersebut.

Tambahkan baris kode kedalam file create.blade.php.
@extends('layouts.main')

@section('content')
    <div class="col-md-8 col-md-offset-2">
        <div class="panel panel-default">
            <div class="panel-heading">
                <p>Add Image</p>
            </div>
            <div class="panel-body">
                <form action="{{ route('images.store') }}" method="POST" enctype="multipart/form-data" class="form-horizontal">
                    <input type="hidden" name="_token" value="{{ csrf_token() }}">
                    <div class="form-group">
                        <label for="title" class="control-label col-md-3">Title</label>
                        <div class="col-md-9">
                            <input type="text" name="title" class="form-control" placeholder="Write title for your image...">
                        </div>
                    </div>
                    <div class="form-group">
                        <label for="photo" class="control-label col-md-3">Upload Photo</label>
                        <div class="col-md-9">
                            <input type="file" name="photo" class="form-control">
                        </div>
                    </div>
                    <div class="form-group">
                        <div class="col-md-9 col-md-offset-3">
                            <button type="submit" class="btn btn-primary">Save</button>
                            <a href="{{ route('images.index') }}" class="btn btn-default">Cancel</a>
                        </div>
                    </div>
                </form>
            </div>
        </div>
    </div>
@stop
Setelah itu kalian masukkan juga baris kode dibawah ini untuk file index.blade.php
@extends('layouts.main')

@section('content')
    <div class="col-md-8 col-md-offset-2">
        <div class="panel panel-default">
            <div class="panel-heading">
                <p>Images</p>
            </div>
            <div class="panel-body">
                @foreach ($images as $image)
                    <div class="col-sm-3">
                        <a href="" class="thumbnail">
                            <img src="uploads/{{ $image->photo, $image->title }}" alt="">
                            <div class="caption">
                                {{ $image->title }}
                            </div>
                        </a>
                    </div>
                @endforeach
            </div>
        </div>
    </div>
@stop
Keenam

Kalian buat folder baru bernama uploads di public/uploads. Folder tersebut untuk menyimpan file image yang kita upload karena.

Selamat mencoba dan jika kalian masih bingung silakan taruh petanyaan kalian dibagian komentar. Bye ..... terimaksih.

Push Project Laravel ke Github





















Tutorial sebelumnya yaitu Mengelola Project Laravel dengan git kita sudah add project kita ke area staging. Pada kesempatan kali ini kita akan push project kita ke github.

Buatlah repository baru di github tanpa menambahkan file REDME, gitignore ataupun file licence.

Dibawah ini adalah halaman pembuatan repository baru di github. Seperti yang sudah saya sebuatkan diatas kalian tidak perlu merubah apapun dalam tahapan ini. Klik Create repository untuk memulainya.


Halaman quick setup repository baru github.



Setelah kalian berhasil membuat repositori baru, sekarang buka terminal dan ketikan perintah berikut ini. Perintah dibawah ini dimaksudkan untuk menambah remote upstream ke github.
<your_path>:~/laravel$ git add remote origin https://github.com/Saepudin0708/Belajar-Git.git
Berikutnya kita push project laravel dengan perintah berikut.
<your_path>:~/laravel$ git push -u -f origin master
Sampai disini dulu dan apabila ada pertanyaan silakan jangan ragu-ragu untuk bertanya. Terimakasih.

Mengelola Project Laravel dengan git

 Kalian belum menggunakan atau bahkan belum tahu sistem kontrol versi atau Version Control System ? Sedangkan kalian ingin melacak perubahan kode pada project laravel kalian tapi kalian tidak tahu bagaimana caranya? Gunakan Git.

Masukklah kedalam project laravel kalian dan ketikan perintah git init didalam project laravel.
<your_path>:~$ cd laravel
<your_path>:~/laravel$ git init
Sekarang coba untuk memeriksa statusnya.
<your_path>:~/laravel$ git status
Maka, akan terlihat file-file yang tidak terlacak oleh git seperti dibawah ini.
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add ..." to include in what will be commited)
#
#       .env.example
#       .gitattributes
#       .gitignore
#       app/
#       artisan
#       bootstrap
#       composer.json
#       composer.lock
#       config/
#       database/
#       gulpfile.js
#       package.json
#       phpunit.xml
#       public/
#       readme.md
#       resources/
#       server.php
#       storage/
#       tests/
nothing added to commit but untracked files present (use "git add" to track)
Konfigurasikan nama dan email kalian dengan Git.
<your_path>:~/laravel$ git config --global user.email "youremail@example.com"
<your_path>:~/laravel$ git config --global user.name "Your Name"
Berikutnya kita akan menambahkan project laravel kita ke tahap staging.
<your_path>:~/laravel$ git add .
<your_path>:~/laravel$ git commit -m "first commit"
Jika kalian git status maka akan menampilkan tidak ada file yang berubah.
<your_path>:~/laravel$ git status
Tampilannya seperti berikut.
# On branch master
nothing to commit, working directory clean
Selamat project laravel kalian sudah berhasil dikonfigurasikan dengan git.
Dikesempatan mendatang kita akan push project kita ke Github. Sekian dan terimakasih.

Pengenalan Bootstrap untuk pemula





















Pada kesempatan ini saya akan berbagi sedikit pengetahuan saya yang memang sedikit ini tentang bootstrap. Bootstrap adalah "the most popular HTML, CSS, and JS framework for developing responsive, mobile first projects on the web" paling tidak itulah yang tertulis dihalaman utama website bootstrap.

Bagaimana kita bisa mendapatkan bootstrap? Kalian bisa langsung mengunjungi website resminya Bootstrap, disana ada beberapa option untuk memasang bootstrap disebuah project. Versi yang penulis pake untuk membuat tutorial ini adalah bootsrtap 3, sebenarnya kita sudah bisa mencoba versi terakhir yaitu bootstrap 4, tapi masih versi alpha.

Membuat Halaman dengan Bootstrap

Pertama tambahkan doctype HTML
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
    </head>
    <body>
        
    </body>
</html>
Bootstrap 3 itu mobile-first
Mobile-first adalah bagian utama dari framework bootstrap. Salah satu fitur bootstrap adalah didesain responsive untuk perangkat mobile, untuk mengaktifkannya bisa dilihat baris kode dibawah.
<meta name="viewport" content="width=device-width, initial-scale=1">
Container
Bootstrap menyediakan class container untuk membungkus konten website yang akan kita kerjakan.
Bootstrap menyediakan dua container yaitu, class .container dan .container-fluid, perbedaan apa? kalian bisa meecobanya dari kedua contoh baris kode dibawah ini.
<nav class="navbar navbar-default">
    <div class="container">
        <!-- Brand and toggle get grouped for better mobile display -->
        <div class="navbar-header">
            <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
            <a class="navbar-brand" href="#">Brand</a>
        </div>

        <!-- Collect the nav links, forms, and other content for toggling -->
        <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
            <ul class="nav navbar-nav">
                <li class="active"><a href="#">Link <span class="sr-only">(current)</span></a></li>
                <li><a href="#">Link</a></li>
                <li class="dropdown">
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a>
                    <ul class="dropdown-menu">
                        <li><a href="#">Action</a></li>
                        <li><a href="#">Another action</a></li>
                        <li><a href="#">Something else here</a></li>
                        <li role="separator" class="divider"></li>
                        <li><a href="#">Separated link</a></li>
                        <li role="separator" class="divider"></li>
                        <li><a href="#">One more separated link</a></li>
                    </ul>
                </li>
            </ul>
            <form class="navbar-form navbar-left" role="search">
                <div class="form-group">
                    <input type="text" class="form-control" placeholder="Search">
                </div>
                <button type="submit" class="btn btn-default">Submit</button>
            </form>
            <ul class="nav navbar-nav navbar-right">
                <li><a href="#">Link</a></li>
                <li class="dropdown">
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a>
                    <ul class="dropdown-menu">
                        <li><a href="#">Action</a></li>
                        <li><a href="#">Another action</a></li>
                        <li><a href="#">Something else here</a></li>
                        <li role="separator" class="divider"></li>
                        <li><a href="#">Separated link</a></li>
                    </ul>
                </li>
            </ul>
        </div><!-- /.navbar-collapse -->
    </div><!-- /.container-fluid -->
</nav>
<nav class="navbar navbar-default">
    <div class="container-fluid">
        <!-- Brand and toggle get grouped for better mobile display -->
        <div class="navbar-header">
            <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
            <a class="navbar-brand" href="#">Brand</a>
        </div>

        <!-- Collect the nav links, forms, and other content for toggling -->
        <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
            <ul class="nav navbar-nav">
                <li class="active"><a href="#">Link <span class="sr-only">(current)</span></a></li>
                <li><a href="#">Link</a></li>
                <li class="dropdown">
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a>
                    <ul class="dropdown-menu">
                        <li><a href="#">Action</a></li>
                        <li><a href="#">Another action</a></li>
                        <li><a href="#">Something else here</a></li>
                        <li role="separator" class="divider"></li>
                        <li><a href="#">Separated link</a></li>
                        <li role="separator" class="divider"></li>
                        <li><a href="#">One more separated link</a></li>
                    </ul>
                </li>
            </ul>
            <form class="navbar-form navbar-left" role="search">
                <div class="form-group">
                    <input type="text" class="form-control" placeholder="Search">
                </div>
                <button type="submit" class="btn btn-default">Submit</button>
            </form>
            <ul class="nav navbar-nav navbar-right">
                <li><a href="#">Link</a></li>
                <li class="dropdown">
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a>
                    <ul class="dropdown-menu">
                        <li><a href="#">Action</a></li>
                        <li><a href="#">Another action</a></li>
                        <li><a href="#">Something else here</a></li>
                        <li role="separator" class="divider"></li>
                        <li><a href="#">Separated link</a></li>
                    </ul>
                </li>
            </ul>
        </div><!-- /.navbar-collapse -->
    </div><!-- /.container-fluid -->
</nav>
Baris kode diatas akan menghasilkan tampilan seperti dibawah.
Navbar dengan class container

Navbar dengan container-fluid class






















Gambar diatas sudah jelas perbedaannya antara .container dan .container-fluid. Kelas .container berfungsi untuk memberikan tampilan fixed terhadap konten yaitu lebar antara kiri dan kanan tidak terlalu lebar atau terlalu sempit alias pas sedangkan .container-fluid memberikan tampilan full terhadap lebar dari kontent website.

Oke sekian dulu tutorial dasarnya, sebenarnya masih banyak lagi fitur-fitur keren lainnya dari bootstrap. Kalian tinggal lihat di website bootstrap dan pelajari sendiri karena memang mudah untuk dipelajari, jika kalian menemukan kesulitan tinggal kasih komentar saja disesi tutorial pengenalan bootstrap ini.

Laravel 5.2 CRUD Sederhana : Bagian 5





















Postingan keempat untuk series tutorial ini kita sudah sampai edit data dan untuk bagian lima ini kita akan membuat untuk hapus data dan beberapa tambahan lainnya untuk mempercantik behavior respon aplikasinya.

Hal pertama yang harus kita buat adalah file view untuk menampilkan data yang kita pilih sebelum melakukan tindakan penghapusan, karena untuk mencegah terhapusnya data karena ketidaksengajaan.
Berikut adalah baris kode untuk view hapus data dengan nama file delete.blade.php.
@extends('templates.default')
@section('content')
    <div class="row">
        <div class="col-md-8 col-md-offset-2">
            <div class="panel panel-default">
                <div class="panel-heading">Form Ubah Data Siswa</div>
                <div class="panel-body">
                    <form action=" {{ route('student.destroy', $students->id) }} " method="POST" class="form-horizontal">
                        <input type="hidden" name="_method" value="DELETE">
                        <div class="form-group">
                            <label for="" class="control-label col-md-3">Nama Siswa</label>
                            <div class="col-md-6">
                                <input type="text" name="name" class="form-control" value="{{ Request::old('name') ?: $students->name }}" readonly="">
                            </div>
                            <div class="col-md-3"></div>
                        </div>
                        <div class="form-group">
                            <label for="" class="control-label col-md-3">Alamat Siswa</label>
                            <div class="col-md-6">
                                <input type="text" name="address" class="form-control" value="{{ Request::old('address') ?: $students->address }}" readonly="">
                            </div>
                            <div class="col-md-3"></div>
                        </div>
                        <div class="col-md-3"></div>
                        <div class="col-md-6">
                            <button type="submit" class="btn btn-primary btn-sm">Simpan</button>
                            <a href=" {{ route('student') }} " class="btn btn-primary btn-sm">Batal</a>
                        </div>
                        <input type="hidden" name="_token" value="{{ Session::token() }}">
                    </form>
                </div>
            </div>
        </div>
    </div>
@stop
Berikutnya yang harus kita buat adalah routing untuk menampilkan view dan proses hapusnya.
Route::get('student/delete/{id}', [
    'as' => 'student.delete', 'uses' => 'StudentController@delete'
]);

Route::delete('student/delete/{id}', [
    'as' => 'student.destroy', 'uses' => 'StudentController@destroy'
]);
Selanjutnya kita buat controllernya.
public function delete($id)
    {

        $students = Student::findOrFail($id);

        return view('students.delete')->with('students', $students);
    }
public function destroy($id)
    {
        
        $students = Student::findOrFail($id);

        $students->destroy($id);

        return redirect()
            ->route('student')
            ->with('info', 'Data berhasil dihapus');
    }
Oke, kita sudah selesai dengan fungsi hapus dan selanjutnya kita akan membuat respon untuk form tambah data dan form edit data, agar ketika form masih kosong kemudian kita tekan tombol simpan akan tampil tulisan peringatan untuk memberitahukan kalau form tidak boleh kosong. Check it out!!
@extends('templates.default')
@section('content')
    <div class="row">
        <div class="col-md-8 col-md-offset-2">
            <div class="panel panel-default">
                <div class="panel-heading">Form Tambah Data Siswa</div>
                <div class="panel-body">
                    <form action=" {{ route('student.post') }} " method="POST" class="form-horizontal">
                        <div class="form-group {{ $errors->has('name') ? 'has-error' : '' }} ">
                            <label for="" class="control-label col-md-3">Nama Siswa</label>
                            <div class="col-md-6">
                                <input type="text" name="name" class="form-control" value="{{ Request::old('name') ? : '' }}">
                                @if ($errors->has('name'))
                                    <span class="help-block"> {{ $errors->first('name') }} </span>
                                @endif
                            </div>
                            <div class="col-md-3"></div>
                        </div>
                        <div class="form-group {{ $errors->has('address') ? 'has-error' : '' }} ">
                            <label for="" class="control-label col-md-3">Alamat Siswa</label>
                            <div class="col-md-6">
                                <input type="text" name="address" class="form-control" value="{{ Request::old('address') ? : '' }}">
                                @if ($errors->has('address'))
                                    <span class="help-block"> {{ $errors->first('address') }} </span>
                                @endif
                            </div>
                            <div class="col-md-3"></div>
                        </div>
                        <div class="col-md-3"></div>
                        <div class="col-md-6">
                            <button type="submit" class="btn btn-primary">Simpan</button>
                            <a href=" {{ route('student') }} " class="btn btn-warning">Batal</a>
                        </div>
                        <input type="hidden" name="_token" value="{{ Session::token() }}">
                    </form>
                </div>
            </div>
        </div>
    </div>
@stop
Untuk view halaman ubah kalian tinggal tambahkan saja seperti view tambah data diatas.
Akhirnya tutorial sederhana ini selesai juga. Apabila kalian masih ada yang belum dimengerti baik itu dengan tulisannya ataupun dengan kode-kodenya, kalian bisa tanyakan di bagian komentar dibawah ini. Terimakasih ya teman-teman.

Laravel 5.2 CRUD Sederhana : Bagian 4





















Selamat datang di tutorial membuat CRUD sederhana dengan laravel bagian 4 (empat). Bagi kalian yang baru mengunjungi blog ini dan baru melihat titorial ini dan mungkin tertarik untuk mencobanya, kalian bisa mengunjungi tutorial Laravel CRUD Sederhana Bagian 1.

Postingan bagian ketiga kita sudah berhasil menampilkan isi tabel student ditambah menggunakan pagination. Postingan bagian empat ini kita akan mencoba untuk mengubah data yang sudah ada dalam database.

Pertaman kita buat view untuk editnya dan nama filenya edit.blade.php, sebenarnya hampir sama dengan view untuk tambah data. Kalian bisa melihat perbedaannya dari bari kode dibawah ini.
@extends('templates.default')
@section('content')
    <div class="row">
        <div class="col-md-8 col-md-offset-2">
            <div class="panel panel-default">
                <div class="panel-heading">Form Ubah Data Siswa</div>
                <div class="panel-body">
                    <form action=" {{ route('student.patch', $students->id) }} " method="POST" class="form-horizontal">
                        <input type="hidden" name="_method" value="PATCH">
                        <div class="form-group">
                            <label for="" class="control-label col-md-3">Nama Siswa</label>
                            <div class="col-md-6">
                                <input type="text" name="name" class="form-control" value="{{ Request::old('name') ?: $students->name }}">
                            </div>
                            <div class="col-md-3"></div>
                        </div>
                        <div class="form-group">
                            <label for="" class="control-label col-md-3">Alamat Siswa</label>
                            <div class="col-md-6">
                                <input type="text" name="address" class="form-control" value="{{ Request::old('address') ?: $students->address }}">
                            </div>
                            <div class="col-md-3"></div>
                        </div>
                        <div class="col-md-3"></div>
                        <div class="col-md-6">
                            <button type="submit" class="btn btn-primary btn-sm">Simpan</button>
                            <a href=" {{ route('student') }} " class="btn btn-primary btn-sm">Batal</a>
                        </div>
                        <input type="hidden" name="_token" value="{{ Session::token() }}">
                    </form>
                </div>
            </div>
        </div>
    </div>
@stop
Untuk routing kalian pindahkan semuanya kedalam middleware , lebih jelasnya kalian liat baris kode dibawah.
Route::group(['middleware' => ['students']], function () {
    Route::get('student', [
        'as' => 'student', 'uses' => 'StudentController@index'
    ]);

    Route::get('student/add', [
        'as' => 'student.add', 'uses' => 'StudentController@create'
    ]);

    Route::post('student/add', [
        'as' => 'student.post', 'uses' => 'StudentController@store'
    ]);

    Route::get('student/edit/{id}', [
        'as' => 'student.edit', 'uses' => 'StudentController@edit'
    ]);

    Route::patch('student/edit/{id}', [
        'as' => 'student.patch', 'uses' => 'StudentController@update'
    ]);
});
Berikutnya kalian buat controller untuk menampilkan halaman ubah data dan proses untuk menyimpan data hasil dari data yang sudah diubah.
public function edit($id)
{

    $students = Students::findOrFail($id);

    return view('students.edit')->with('students', $students);
}
public function update(Request $request, $id)
{
        
    $students = Students::findOrFail($id);
    $this->validate($request, [
        'name'      => 'required',
        'address'   => 'required',
    ]);

    $input = $request->all();

    $students->fill($input)->save();

    return redirect()
        ->route('student')
        ->with('info', 'Data berhasil diubah');
}
Proses untuk mengubah data sudah selesai kita buat. Silakan kalian coba dan praktekan, jika ada kesulitan atau tidak dimengerti silakan kirim komentar kalian.