Я пытаюсь создать проект Laravel, который позволяет авторизованному администратору редактировать продукты. Представление редактирования работает, но как только изменения сохраняются, он вызывает функцию-член update()
при нулевой ошибке.
public function edit($id)
{
$products = Product::with(['categories'])->find($id);
$categories = Category::all();
return view('products.edit', compact('products', 'categories'));
}
public function update(Request $request, $id)
{
$product = Product::find($id);
$product->update($request->only(['name', 'description', 'weight', 'price']));
$product->categories()->sync($request->get('category_id'));
return redirect('/products');
}
Однако я получил следующую ошибку:
Вызов функции-члена update () для null
Просмотр / Blade
<div style="width: 50%;position: relative;left: 20%;top: 30px;">
<form method="POST" action="{{route('products.update',['id',$products->id])}}">
@csrf
@method('PUT')
<div class="card">
<div class="card-body">
<h1 style="text-align: center">
Edit Product {{$products->name}}
</h1>
<div class="form-group" style="display: grid;background: cornsilk;">
<div class="form-group">
<label for="name">Name:</label>
<input name="name" value="{{$products->name}}" class="form-control">
</div>
<div class="form-group">
<label for="description">Description:</label>
<input name="description" value="{{$products->description}}" class="form-control">
</div>
<div class="form-group">
<label for="weight">Weight:</label>
<input name="weight" value="{{$products->weight}}" class="form-control">
</div>
<div class="form-group">
<label for="price">Price:</label>
<input name="price" value="{{$products->price}}" class="form-control">
</div>
<div class="form-group">
<label for="category">Category:</label>
<select name="category_id[]" class="form-control" multiple>
@foreach($categories as $category)
<option value="{{$category->id}}"
{{$products->categories->contains('id',$category->id) ? 'selected':''}}
>{{$category->name}}</option>
@endforeach
</select>
</div>
{!! Form::submit('submit',['class','btn btn-success']) !!}
</div>
@if ($errors->any())
<div class="alert alert-danger" style="direction: rtl;text-align: right">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
</div>
</div>
</form>
</div>