Я новичок в Laravel. Здесь я пытаюсь опубликовать свою форму ввода в сеансе, но она не работает. Я получаю эту ошибку без какого-либо сообщения:
Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException
Ничего не нашел, здесь я делюсь своим кодом.
Мой контроллер:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Category;
use \App\Product;
class ShopController extends Controller
{
public function index()
{
$categories = Category::with('products')->get();
return view('shop.index', compact('categories'));
}
public function category($id)
{
$products = Category::find($id)->products;
return view('shop.1', compact('products'));
}
public function addToShoppingCart(Request $request)
{
$request->session()->put('cart', 'id');
$request->session()->put('cart', 'number');
$request->session()->flash('status', 'Product is toegevoegd!');
return redirect()->back();
}
}
Мой взгляд:
@extends('layouts.app')
@section('content')
@if (Session::has('id', 'number'))
<div class = "alert alert-success">
{{Session::get('id', 'number')}}
</div>
@endif
@foreach ($products as $product)
<ul>
<li>{{ $product->name }}</li>
<li>{{ $product->description }}</li>
<li>{{ $product->price }}</li>
<li>{{ $product->amount }}</li>
</ul>
<form method = "post" action = "{{url('categories\{id}')}}">
@csrf
<div class = "col-md-4">
<label for = "number">Aantal:</label>
<input type = "number" name = "number">
<label for = "id">Id:</label>
<input type = "text" id = "id" name = "id" value= {{$product->id}}>
<button type = "submit" class = "btn btn-success">Add product</button>
</div>
</form>
@endforeach
{{var_dump(Session::get('cart'))}}
@endsection
Мои маршруты:
Route::get('/shop', 'Shopcontroller@index')->name('shop');
Route::get('/categories/{id}', 'ShopController@category');
Route::get('/cart/{id}', 'ShopController@addToShoppingCart');
Я надеюсь, что кто-то может помочь мне с моей проблемой, чтобы ввести ввод в сеанс laravel.






Вы пытаетесь «опубликовать», используя маршрут «получить». Вы должны заменить Route::get на Route::post
Я говорил о ваших маршрутах: Route::get('/categories/{id}', 'ShopController@category'); становится Route::post('/categories/{id}', 'ShopController@category');
Никакой ошибки, так что это здорово. Но мой var_dump не работает, мне нужно изменить его на {{var_dump(Session::get('number'))}}?
Прежде всего, я предлагаю вам использовать метод route(). В методе url() нет ничего плохого, но я просто использую метод route().
Итак, давайте решим вашу проблему!
Route::get('/shop', 'Shopcontroller@index')->name('shop');
Route::post('/categories/{id}', 'ShopController@category')->name('category');
Route::get('/cart/{id}', 'ShopController@addToShoppingCart')->name('cart.add');
action = "{{route('category',['id' => 'your_category_id_here'])}}
use Session;В вашем контроллере отсутствует оператор use Session;, добавьте его вверху страницы контроллера, чтобы вы могли использовать сеансы.
Изменил мой запрос $ на сеанс в моем сообщении, чтобы получить, но все еще получаю ту же ошибку