I got the following error when updating a form, Illuminate\Http\Request::Illuminate\Foundation\Providers{closure}(): Argument #1 ($rules) must be of type array, Illuminate\Http\Request given, called in D:\devwiz-developer\ipbt\vendor\laravel\framework\src\Illuminate\Macroable\Traits\Macroable.php on line 124 . I wonder what is the problem here ? Please help
The following are the code in the ProductsController.php,
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
$categories = DB::table('kategori_jualan')->get();
$types = DB::table('jenis_jualan')->get();
return Inertia::render('Produk/Create', [
'categories' => $categories,
'types' => $types
]);
}
public function store(Request $request)
{
$request->validate([
'name' => 'required',
'images.*' => 'image|max:2048', // max file size: 2MB
'documents.*' => 'file|max:2048', // max file size: 2MB
]);
DB::table('products')->insert([
'name' => $request['name'],
'description' => $request['description'],
'type_id' => $request['type_id'],
'category_id' => $request['category_id'],
'price' => $request['price'],
'start_date' => $request['start_date'],
'end_date' => $request['end_date'],
'is_password' => $request['is_password'],
'is_stamping' => $request['is_stamping'],
'created_at' => now(),
]);
// handle image uploads
if ($request->hasFile('images')) {
foreach ($request->file('images') as $image) {
$path = $image->store('public/images');
DB::table('images')->insert([
'product_id' => $request->id,
'image_path' => Storage::url($path),
'created_at' => now(),
]);
}
}
// handle document uploads
if ($request->hasFile('documents')) {
foreach ($request->file('documents') as $document) {
$path = $document->store('public/documents');
DB::table('documents')->insert([
'product_id' => $request->id,
'document_path' => Storage::url($path),
'created_at' => now(),
]);
}
}
return Redirect::route('produk.index');
}
public function update(Request $request, $id)
{
$request->validate($request, [
'name' => 'required',
'images.*' => 'image|max:2048', // max file size: 2MB
'documents.*' => 'file|max:2048', // max file size: 2MB
]);
// delete existing images and documents
DB::table('images')->where('product_id', $id)->delete();
DB::table('documents')->where('product_id', $id)->delete();
Storage::deleteDirectory('public/images/' . $id);
Storage::deleteDirectory('public/documents/' . $id);
DB::table('products')->where('id', $id)->update([
'name' => $request->input('name'),
'description' => $request->input('description'),
'type_id' => $request->input('type_id'),
'category_id' => $request->input('category_id'),
'price' => $request->input('price'),
'start_date' => $request->input('start_date'),
'end_date' => $request->input('end_date'),
'is_password' => $request->input('is_password'),
'is_stamping' => $request->input('is_stamping'),
'updated_at' => now(),
]);
// handle image uploads
if ($request->hasFile('images')) {
foreach ($request->file('images') as $image) {
$path = $image->store('public/images/' . $id);
DB::table('images')->insert([
'product_id' => $id,
'image_path' => Storage::url($path),
'created_at' => now(),
]);
}
}
// handle document uploads
if ($request->hasFile('documents')) {
foreach ($request->file('documents') as $document) {
$path = $document->store('public/documents/' . $id);
DB::table('documents')->insert([
'product_id' => $id,
'document_path' => Storage::url($path),
'created_at' => now(),
]);
}
}
return Redirect::route('produk.index');
}