Kemudian kita akan lanjutkan dipart ini dengan mengerjakan proses edit data untuk kategori. Kita akan membuat komponen / halaman baru, mengambil data dan memperbaharui data kategori.
Membuat Komponen
Mari kita mulai dengan membuat sebuah komponen untuk halaman edit. Kita buat komponen baru dengan nama EditCategory.vue.//EditCategory.vue
<template>
<div class="_container">
<div class="admin-page-title">Edit Category</div>
<div class="_wrap-form">
<div class="h_wrap">
<form class="_bg-form">
<div class="form-group">
<input type="text" ref="name" class="form-control" id="name" placeholder="Name">
</div>
<button type="submit" class="btn btn-success">
Submit
</button>
<router-link :to="{ name: 'allcategories'}">
<button type="submit" class="btn btn-success">Back</button>
</router-link>
</form>
</div>
</div>
</div>
</template>
<script>
export default {
};
</script>
Import Komponen
Selanjutnya kita import dan buat routenya di app.js.//app.js
import EditCategory from './components/EditCategory'
{
path: '/admin/editcategory/:categoryId/edit',
name: 'editcategory',
component: EditCategory,
props: true,
},
Kita buat props :categoryId sebagai parameter yang mengambil id dari kategori.Lalu pada komponen AllCategories.vue kita buat router-link dengan parameter yang mengambil id kategori.
//AllCategories.vue
...
<router-link :to="{ name: 'editcategory', params: { categoryId: cateogry.id } }">
<button type="button" class="btn btn-primary">
Edit
</button>
</router-link>
...
Menampilkan Data Kategori
Selanjutnya kita akan tampilkan data kategorinya yaitu nama dari kategori sesuai id.//EditCategory.vue
props: {
categoryId: {
type: Number,
required: true
}
},
data() {
return {
//
};
},
created: function () {
this.getCategory();
},
methods: {
getCategory() {
axios.get('/api/categories/' + this.categoryId + '/edit')
.then(response => {
console.log(response.data.name);
this.$refs.name.value = response.data.name;
});
},
}
};
Nama kategori berhasil ditampilkan. Sebagai contoh pada gambar diatas kita akan melakukan edit kategori dengan id 1 yaitu laravel.
Selanjutnya setelah berhasil membua fungsi untuk menampilkan nama kategorinya, kita lanjutnya dengan membuat fungsi untuk update data.
CategoryController.php
//CategoryController.php
public function update(Request $request, $id)
{
$this->validate($request, [
'name' => 'required'
]);
$category = Category::find($id);
$category->name = $request->name;
$category->save();
return $category;
}
//EditCategory.vue
<template>
<div class="_container">
<div class="admin-page-title">Edit Category</div>
<span v-if="successful" class="label label-success">
<h4>Updated!</h4>
<small>(Kategori berhasil diperbaharui!)</small>
</span>
<div class="_wrap-form">
<form class="_bg-form">
<div class="form-group">
<span v-if="errors.name" class="badge badge-danger">{{errors.name[0]}}</span>
<input type="text" class="form-control" ref="name" id="name" placeholder="Name">
</div>
<button type="submit" @click.prevent="updateCategory" class="btn btn-primary">
Submit
</button>
<router-link :to="{name: 'allcategories'}">
<button type="button" class="btn btn-success"> Back </button>
</router-link>
</form><br><br><br>
</div>
</div>
</template>
<script>
export default{
props:{
categoryId:{
type: Number,
required : true
}
},
data:function(){
return{
successful: false,
errors:[],
}
},
created:function(){
this.getCategory();
},
methods:{
updateCategory(){
let name = this.$refs.name.value;
axios.put('/api/categories/' + this.categoryId, {name} )
.then(response => {
console.log(response.data);
this.successful = true;
this.errors = false;
})
.catch(error => {
if((error.response.status = 422 )){
console.log(error.response.data);
this.errors = error.response.data.errors;
this.successful = false;
}
});
},
getCategory(){
axios.get("/api/categories/" + this.categoryId + "/edit")
.then(response => {
console.log(response.data);
this.$refs.name.value = response.data.name;
})
}
}
}
</script>
<style scoped>
.label-success{
background-color: #4fca6b;
display: inline-block;
width: 100%;
color: #fff;
padding: 8px 15px;
margin-bottom: 8px;
}
.label-success h4{
margin-bottom: 0;
}
</style>
Demikian, sampai disini kita telah menyelesaikan proses edit data untuk kategori beserta respon dan validasinya.
Silahkan dikerjakan, kita lanjut lagi di part selanjutnya.



