Product Controller
<?php
namespace App\Http\Controllers;
use App\Http\Requests\ProductRequest;
use App\Http\Resources\ProductResource;
use App\Models\Products;
use Illuminate\Http\Request;
class ProductController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index()
{
$products = Products::all();
return new ProductResource(true, 'Data product', $products);
}
/**
* Store a newly created resource in storage.
*/
public function store(ProductRequest $request)
{
$data = $request->validated();
if ($request->hasFile('image')) {
$image = $request->file('image');
$image->move(public_path('images/'), $image->getClientOriginalName());
$data['image'] = asset('images/' . $image->getClientOriginalName());
} else {
$data['image'] = '-';
}
$product = Products::create($data);
return new ProductResource(true, 'Berhasil Menyimpan Product', $product);
}
/**
* Display the specified resource.
*/
public function show(Products $product)
{
return new ProductResource(true, 'Data product', $product);
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, Products $product)
{
$data = $request->all();
if ($request->hasFile('image')) {
$image = $request->file('image');
$path = $image->move(public_path('/images'), $image->getClientOriginalName());
$data['image'] = $path;
} else {
$data['image'] = '-';
}
$product->update($data);
return new ProductResource(true, 'Product Berhasil Di update', $product);
}
/**
* Remove the specified resource from storage.
*/
public function destroy(Products $product)
{
$product->delete();
return new ProductResource(true, 'Product Berhasil Di Hapus', $product);
}
}
__
Membuat halaman resource dengan code product
<?php
namespace App\Http\Resources;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
class ProductResource extends JsonResource
{
public $status;
public $message;
public $resource;
public function __construct($status,$message ,$resource)
{
parent:: __construct($resource);
$this->status=$status;
$this->message=$message;
}
/**
*
* Transform the resource into an array.
*
* @return array<string, mixed>
*/
public function toArray(Request $request): array
{
return [
'status' => $this->status,
'message'=> $this->message,
'data' => $this->resource
];
}
}