Share

Belajar Membuat Modul CRUD di Laravel 5

by Welly Rosadi · 21 April 2018

Funtion dan View Untuk Input Data

Langkahnya sama, kita buat controller nya terlebih dahulu baru kemudian view nya. Buka kembali file PostController.php, kali ini kita akan mengedit bagian create() & store().
Pada bagian create(), edit sehingga menjadi seperti berikut:

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

Untuk bagian store(), isinya menjadi seperti berikut:

public function store(Request $request)
{
  request()->validate([
    'judul' => 'required',
    'isi' => 'required',
  ]);
  Post::create($request->all());

  $request->session()->flash('pesan','Post '.$request['judul'].' berhasil disimpan.');

  return redirect()->route('post.index');
}

request()->validate

kita melakukan validasi formulir. Dalam contoh ini kita memberikan required, yang artinya harus diisi.

Post::create($request->all());

Menyimpan data ke dalam database.

$request->session()->flash()

Membuat session sementara berisi pesan.

return redirect()

Mengalihkan ke halaman index.

Buat sebuah file baru di direktori Post dan beri nama create.blade.php . Di dalamnya isikan seperti berikut:

@extends('layouts.app')

@section('content')
<div class="container">
  <div class="row justify-content-center">
    <div class="col-md-10">
      <div class="card">
        <div class="card-body">
          <h2>Post baru</h2>

          @if ($errors->any())
          <div class="alert alert-danger">
            <ul>
              @foreach ($errors->all() as $error)
              <li>{{ $error }}</li>
              @endforeach
            </ul>
          </div>
          @endif

          <form action="{{ route('post.store') }}" method="POST">
            @csrf

            <div class="form-group row">
              <div class="col-md-12">
                <strong>Judul:</strong>
                <input type="text" name="judul" class="form-control" placeholder="Judul">
              </div>
            </div>

            <div class="form-group row">
              <div class="col-md-12">
                <strong>Isi:</strong>
                <textarea class="form-control" rows="5" name="isi" placeholder="Isi post"></textarea>
              </div>
            </div>

            <div class="form-group row">
              <div class="col-md-6">
                <a href="{{ route('post.index') }}" class="btn btn-secondary">Kembali</a>
              </div>
              <div class="col-md-6 text-right">
                <button type="submit" class="btn btn-primary">Submit</button>
              </div>
            </div>

          </div>
        </form>
      </div>
    </div>
  </div>
</div>
</div>
@endsection

Function dan View untuk menampilkan detail

Pada bagian show($id) di controller, ubah menjadi berikut:

public function show(Post $post)
{
  return view('post.show',compact('post'));
}

Buat file view dengan nama show.blade.php isikan dengan:

@extends('layouts.app')

@section('content')
<div class="container">
  <div class="row justify-content-center">
    <div class="col-md-10">
      <div class="card">
        <div class="card-body">
          <h2>{{ $post->judul }}</h2>
          <p>{{ $post->isi }}</p>

          <div class="form-group row">
            <div class="col-md-6">
              <a href="{{ route('post.index') }}" class="btn">Kembali</a>
            </div>
          </div>

        </div>
      </div>
    </div>
  </div>
</div>
@endsection

Function dan View untuk melakukan edit

Pada bagian edit($id) ubah menjadi:

public function edit(Post $post)
{
  return view('post.edit',compact('post'));
}

Pada bagian update($id) ubah menjadi:

public function update(Request $request, Post $post)
{
  request()->validate([
    'judul' => 'required',
    'isi' => 'required',
  ]);

  $post->update($request->all());

  $request->session()->flash('pesan','Post '.$request['judul'].' berhasil diperbarui.');

  return redirect()->route('post.index');
}

Buat file baru, beri nama edit.blade.php dengan isi sebagai berikut:

@extends('layouts.app')

@section('content')
<div class="container">
  <div class="row justify-content-center">
    <div class="col-md-10">
      <div class="card">
        <div class="card-body">
          <h2>Edit Post</h2>

          @if ($errors->any())
          <div class="alert alert-danger">
            <ul>
              @foreach ($errors->all() as $error)
              <li>{{ $error }}</li>
              @endforeach
            </ul>
          </div>
          @endif

          <form action="{{ route('post.update',$post->id) }}" method="POST">
            @csrf
            @method('PUT')

            <div class="form-group row">
              <div class="col-md-12">
                <strong>Judul:</strong>
                <input type="text" name="judul" class="form-control" value="{{ $post->judul }}">
              </div>
            </div>

            <div class="form-group row">
              <div class="col-md-12">
                <strong>Isi:</strong>
                <textarea class="form-control" rows="10" name="isi">{{ $post->isi }}</textarea>
              </div>
            </div>

            <div class="form-group row">
              <div class="col-md-6">
                <a href="{{ route('post.index') }}" class="btn btn-secondary">Kembali</a>
              </div>
              <div class="col-md-6 text-right">
                <button type="submit" class="btn btn-primary">Submit</button>
              </div>
            </div>

          </div>
        </form>
      </div>
    </div>
  </div>
</div>
</div>
@endsection

Function dan View untuk menghapus data

Pada bagian destroy($id), ubah menjadi:

public function destroy(Request $request, Post $post)
{
  $post->delete();

  $request->session()->flash('pesan','Post '.$request['judul'].' berhasil dihapus.');

  return redirect()->route('post.index');
}

Pages: 1 2 3 4

You may also like