我是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会议上发表意见。
答案 0 :(得分:5)
您正在尝试使用“获取”路线进行“发布”。您应将Route::get
更改为Route::post
答案 1 :(得分:0)
首先,我建议您使用procedure_2
方法。 X
方法没有什么问题,但我只是使用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'])}}
语句,请将其添加到控制器页面的顶部,以便您可以使用会话。