Просто измените следующую строку кода:
Route::post('cart/delete/{id}','ProductController@deleteCart');
в:
Route::get('cart/delete/{id}','ProductController@deleteCart');
Причиной этой ошибки является отправка запроса GET на маршрут POST. В своем коде вы отправляете запрос GET, вызывая URL-адрес.
<a href="{{ url('/cart/delete',$row->id) }}" class="remove_item">
<i class="fa fa-times"></i>
</a>
Или иначе, если вы хотите сохранить маршрут как есть (как маршрут POST), просто используйте следующий код и внесите соответствующие коррективы:
<form action="{{ url('/cart/delete') }}" method="POST" style="display: none;">
{!! Form::hidden('id', $row->id) !!}
<input type="submit" value="Submit">
</form>
И лучше изменить маршрут следующим образом, так как часть '/{id}'
не нужна, так как мы отправляем идентификатор вместе с POST-запросом:
Route::post('cart/delete','ProductController@deleteCart');
Импортируйте Http\Request в свой контроллер, используя:
use Illuminate\Http\Request;
И обновите функцию контроллера следующим образом:
public function deleteCart(Request $request){
$cart = Cart::find($request['id']);
$cart->destroy();
return Redirect::to('/shop-cart');
}
Но для этого сценария маршрут GET кажется хорошим выбором, чтобы избежать сложности.
19.03.2017