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');
}