Setelah fungsi upload selesai kita buat, sekarang kita bisa menambahkan fungsi upload image kategori dan hapus image kategori.
# Tambah function upload dan hapus image
Pertama-tama buka file KategoriController.php dan di dalam class KategoriController tambahkan 2 function di bawah function destroy.
public function uploadimage(Request $request) {
$this->validate($request, [
'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
'kategori_id' => 'required',
]);
$itemuser = $request->user();
$itemkategori = Kategori::where('user_id', $itemuser->id)
->where('id', $request->kategori_id)
->first();
if ($itemkategori) {
$fileupload = $request->file('image');
$folder = 'assets/images';
$itemgambar = (new ImageController)->upload($fileupload, $itemuser, $folder);
$inputan['foto'] = $itemgambar->url;//ambil url file yang barusan diupload
$itemkategori->update($inputan);
return back()->with('success', 'Image berhasil diupload');
} else {
return back()->with('error', 'Kategori tidak ditemukan');
}
}
public function deleteimage(Request $request, $id) {
$itemuser = $request->user();
$itemkategori = Kategori::where('user_id', $itemuser->id)
->where('id', $id)
->first();
if ($itemkategori) {
// kita cari dulu database berdasarkan url gambar
$itemgambar = \App\Image::where('url', $itemkategori->foto)->first();
// hapus imagenya
if ($itemgambar) {
\Storage::delete($itemgambar->url);
$itemgambar->delete();
}
// baru update foto kategori
$itemkategori->update(['foto' => null]);
return back()->with('success', 'Data berhasil dihapus');
} else {
return back()->with('error', 'Data tidak ditemukan');
}
}
# web route
Buka file web.php di folder routes dan tambahkan 2 buah route upload dan delete image.
<?php
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', '[email protected]');
Route::get('/about', '[email protected]');
Route::get('/kontak', '[email protected]');
Route::get('/kategori', '[email protected]');
Route::get('/kategori/{slug}', '[email protected]');
Route::get('/produk', '[email protected]');
Route::get('/produk/{slug}', '[email protected]');
Route::group(['prefix' => 'admin', 'middleware' => 'auth'], function() {
Route::get('/', '[email protected]');
// route kategori
Route::resource('kategori', 'KategoriController');
// route produk
Route::resource('produk', 'ProdukController');
// route customer
Route::resource('customer', 'CustomerController');
// route transaksi
Route::resource('transaksi', 'TransaksiController');
// profil
Route::get('profil', '[email protected]');
// setting profil
Route::get('setting', '[email protected]');
// form laporan
Route::get('laporan', '[email protected]');
// proses laporan
Route::get('proseslaporan', '[email protected]');
// image
Route::get('image', '[email protected]');
// simpan image
Route::post('image', '[email protected]');
// hapus image by id
Route::delete('image/{id}', '[email protected]');
// upload image kategori
Route::post('imagekategori', '[email protected]');
// hapus image kategori
Route::delete('imagekategori/{id}', '[email protected]');
});
Auth::routes();
Route::get('/home', '[email protected]')->name('home');
# Update file index.blade.php
Terakhir buka file index.blade.php di dalam folder kategori, dan ubah bagian image kategori menjadi seperti berikut.
@extends('layouts.dashboard')
@section('content')
<div class="container-fluid">
<!-- table kategori -->
<div class="row">
<div class="col">
<div class="card">
<div class="card-header">
<h4 class="card-title">Kategori Produk</h4>
<div class="card-tools">
<a href="{{ route('kategori.create') }}" class="btn btn-sm btn-primary">
Baru
</a>
</div>
</div>
<div class="card-body">
<form action="#">
<div class="row">
<div class="col">
<input type="text" name="keyword" id="keyword" class="form-control" placeholder="ketik keyword disini">
</div>
<div class="col-auto">
<button class="btn btn-primary">
Cari
</button>
</div>
</div>
</form>
</div>
<div class="card-body">
@if ($message = Session::get('error'))
<div class="alert alert-warning">
<p>{{ $message }}</p>
</div>
@endif
@if ($message = Session::get('success'))
<div class="alert alert-success">
<p>{{ $message }}</p>
</div>
@endif
<div class="table-responsive">
<table class="table table-bordered">
<thead>
<tr>
<th width="50px">No</th>
<th>Gambar</th>
<th>Kode</th>
<th>Nama</th>
<th>Jumlah Produk</th>
<th>Status</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach($itemkategori as $kategori)
<tr>
<td>
{{ ++$no }}
</td>
<td>
<!-- image kategori -->
@if($kategori->foto != null)
<img src="{{ \Storage::url($kategori->foto) }}" alt="{{ $kategori->nama_kategori }}" width='150px' class="img-thumbnail mb-2">
<br>
<form action="{{ url('/admin/imagekategori/'.$kategori->id) }}" method="post" style="display:inline;">
@csrf
{{ method_field('delete') }}
<button type="submit" class="btn btn-sm btn-danger mb-2">
Hapus
</button>
</form>
@else
<form action="{{ url('/admin/imagekategori') }}" method="post" enctype="multipart/form-data" class="form-inline">
@csrf
<div class="form-group">
<input type="file" name="image" id="image">
<input type="hidden" name="kategori_id" value={{ $kategori->id }}>
</div>
<div class="form-group">
<button class="btn btn-primary">Upload</button>
</div>
</form>
@endif
<!-- end image kategori -->
</td>
<td>
{{ $kategori->kode_kategori }}
</td>
<td>
{{ $kategori->nama_kategori }}
</td>
<td>
{{ count($kategori->produk) }} Produk
</td>
<td>
{{ $kategori->status }}
</td>
<td>
<a href="{{ route('kategori.edit', $kategori->id) }}" class="btn btn-sm btn-primary mr-2 mb-2">
Edit
</a>
<form action="{{ route('kategori.destroy', $kategori->id) }}" method="post" style="display:inline;">
@csrf
{{ method_field('delete') }}
<button type="submit" class="btn btn-sm btn-danger mb-2">
Hapus
</button>
</form>
</td>
</tr>
@endforeach
</tbody>
</table>
<!-- untuk menampilkan link page, tambahkan skrip di bawah ini -->
{{ $itemkategori->links() }}
</div>
</div>
</div>
</div>
</div>
</div>
@endsection
Hasil jadinya akan seperti ini ketika salah satu kategori di upload gambarnya.
Sekarang coba buat kategori baru dan upload gambar kategorinya.