Pada tutorial sebelumnya kita sudah memulai laravel dan membuat autentikasinya, Tutorial kali ini kita akan membuat CRUD Category
Tutorial Sebelumnya - Boilerplate Laravel 1 : Memulai Dan Autentikasi
Pertama kita akan membuat database dengan cara membuat model category bersamaan dengan migrasi
Membuat model category
Buka cmd dan masuk ke folder project kalian, ketikan code di bawah
C:\xampp\htdocs\blog>php artisan make:model Category -m
Maka otomatis akan membuat file model dan migrasi, silahkan buka file migrasi yg tdi di buat di dalam folder database/migration dan tambahkan field name, lihat script dibawah
public function up()
{
Schema::create('categories', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->timestamps();
});
}
Setelah itu simpan dan jalan code dibawah ini
C:\xampp\htdocs\blog> php artisan migrate
Maka akan ada tabel baru yg bernama categories
Membuat Controller
Selanjutnya kita akan membuat controller categories. silahkan buka cmd kalian dan lihat code dibawah
C:\xampp\htdocs\blog>php artisan make:controller CategoriesController --resource
Maka otomatis CategoriesController.php terbuat beserta fungsinya di dalam folder app/Http/Controllers, silahkan edit seperti dibawah ini.
CategoriesController.php
<?php
namespace App\Http\Controllers;
use App\Category;
use Illuminate\Http\Request;
class CategoriesController extends Controller
{
public function index()
{
return view('admin.categories.index')->with('categories', Category::all());
}
public function create()
{
return view('admin.categories.create');
}
public function store(Request $request)
{
$this->validate($request, [
"name" => "required|max:225"
]);
$category = new Category;
$category->name = $request->name;
$category->save();
return redirect()->route('categories');
}
public function show($id)
{
}
public function edit($id)
{
$category = Category::find($id);
return view('admin.categories.edit')->with('category', $category);
}
public function update(Request $request, $id)
{
$category = Category::find($id);
$category->name = $request->name;
$category->save();
return redirect()->route('categories');
}
public function destroy($id)
{
}
}
Membuat View
Sebelumnya kita buat dlu menu category di file app.blade.php di dalam folder resources/views/layouts, silahkan edit seperti dibawah ini
<div class="container">
<div class="row">
@if(Auth::check())
<div class="col-lg-4">
<ul class="list-group">
<li class="list-group-item">
<a href="{{ route('categories') }}">Category</a>
</li>
</ul>
</div>
@endif
<div class="col-lg-8">
@yield('content')
</div>
</div>
</div>
Setelah itu buat folder admin di dalam resources/views
C:\xampp\htdocs\blog\resources\views> mkdir admin
Buat folder categories di dalam resources/views/admin
C:\xampp\htdocs\blog\resources\views\admin> mkdir categories
Buat folder includes di dalam resources/views/admin
C:\xampp\htdocs\blog\resources\views\admin> mkdir includes
Buat file errors.blade.php di dalam resources/views/admin/includes
errors.blade.php
@if(count($errors) > 0)
<ul class="list-group">
@foreach($errors->all() as $error)
<li class="list-group-item text-danger">
{{ $error }}
</li>
@endforeach
</ul>
@endif
Buat file index.blade.php di dalam resources/views/admin/categories
C:\xampp\htdocs\blog\resources\views\admin\categories> mkdir index.blade.php
index.blade.php
@extends('layouts.app')
@section('content')
<div class="panel panel-default">
<div class="panel-heading">
Categories
</div>
<div class="panel-body">
<div class="text-left">
<button class="btn btn-success" href="{{ route('category.create') }}>Add</button>
</div>
<table class="table table-hover">
<thead>
<th>Category</th>
<th>Action</th>
</thead>
<tbody>
@if($categories->count() > 0)
@foreach($categories as $category)
<tr>
<td>{{ $category->name }}</td>
</tr>
@endforeach
@else
<tr>
<th colspan='2' class='text-center'>Nothing Categories</th>
</tr>
@endif
</tbody>
</table>
</div>
</div>
@stop
Buat file create.blade.php di dalam resources/views/admin/categories
C:\xampp\htdocs\blog\resources\views\admin\categories> mkdir create.blade.php
create.blade.php
@extends('layouts.app')
@section('content')
@include('admin.includes.errors')
<div class="panel panel-default">
<div class="panel-heading">
Creat a new category
</div>
<div class="panel-body">
<form action="{{ route('category.store') }}" method="post">
{{ csrf_field() }}
<div class="form-group">
<label for="name">Name</label>
<input type="text" class="form-control" name="name">
</div>
<div class="form-group">
<div class="text-center">
<button class="btn btn-success" type="submit">Save</button>
</div>
</div>
</form>
</div>
</div>
@stop
Buat file edit.blade.php di dalam resources/views/admin/categories
edit.blade.php
@extends('layouts.app')
@section('content')
@include('admin.includes.errors ')
<div class="panel panel-default">
<div class="panel-heading">
Edit category {{ $category->name }}
</div>
<div class="panel-body">
<form action="{{ route('category.update', ['id'=>$category->id]) }}" method="post">
{{ csrf_field() }}
<div class="form-group">
<label for="name">Name</label>
<input type="text" value="{{ $category->name }}" class="form-control" name="name">
</div>
<div class="form-group">
<div class="text-center">
<button class="btn btn-success" type="submit">Update</button>
</div>
</div>
</form>
</div>
</div>
@stop
Membuat Route
Selanjutnya kita akan membuat route untuk category, silahkan edit file web.php di dalam folder routes
Route::get('/', function () {
return view('welcome');
});
Auth::routes();
Route::group(['prefix' => 'admin', 'middleware' => 'auth'],function(){
Route::get('/home', [
'uses' => 'HomeController@index',
'as' => 'home'
]);
Route::get('/categories', [
'uses' => 'CategoriesController@index',
'as' => 'categories'
]);
Route::get('/category/create', [
'uses' => 'CategoriesController@create',
'as' => 'category.create'
]);
Route::post('/category/store', [
'uses' => 'CategoriesController@store',
'as' => 'category.store'
]);
Route::get('/category/edit/{id}', [
'uses' => 'CategoriesController@edit',
'as' => 'category.edit'
]);
Route::get('/category/delete/{id}', [
'uses' => 'CategoriesController@destroy',
'as' => 'category.delete'
]);
Route::post('/category/update/{id}', [
'uses' => 'CategoriesController@update',
'as' => 'category.update'
]);
});
Pada tahap ini kita sudah bisa membuat CRUD sederhana, Jika berhasil maka akan ada tampilan seperti berikut
Sekian untuk Tutorial Boilerplate Laravel 2 : Membuat CRUD Category Semoga bermanfaat
Tutorial Selanjutnya - Boilerplate Laravel 3 : Membuat CRUD Post