Php 如何在Laravel表单中根据Post请求重定向?

Php 如何在Laravel表单中根据Post请求重定向?,php,laravel,Php,Laravel,我是拉拉维尔的新手,遇到了以下问题: 我有一个表单应该在Post请求时重定向,但重定向没有发生 这是我的表格: <form action="{{route('cart-store')}}" method="post"> {{csrf_field()}} <input type="hidden" name="id" value="{{$product->id}}"> <input type="hidden" name="name" val

我是拉拉维尔的新手,遇到了以下问题:

我有一个表单应该在Post请求时重定向,但重定向没有发生

这是我的表格:

<form action="{{route('cart-store')}}" method="post">
    {{csrf_field()}}
    <input type="hidden" name="id" value="{{$product->id}}">
    <input type="hidden" name="name" value="{{$product->name}}">
    <input type="hidden" name="price" value="{{$product->price}}">

    <button type="submit" class="btn btn-primary shop-button">Add to Card</button>
</form>
这是路线:

Route::post('/cart', 'CartContrloller@store')->name('cart-store');
当我点击submit按钮时,URL会被产品数据填满,但我会在同一个页面上看到,而不是被重新定向到购物车


我不知道为什么会发生这种事。这是一种至少能找出什么东西坏了的方法吗?我使用的是5.7版本。

在控制器中,您需要在重定向()中使用route('cart-index')

公共函数存储(请求$Request)
{
购物车::添加($request->id,$request->name,1,$request->price)->关联('App\Product');
return redirect(route('cart-index'))->带有('success_message','Item was added to your cart!');
}
或者,如果需要重定向回,请尝试:

return redirect()->back()->带有('success_message','Item was added to your cart!');

我想这里的最佳实践可能是使用laravel的重定向返回:

return redirect()->back()->with('success_message','any message you want')

您不能重定向到post方法,post路由除了:csrf_令牌和一些数据与post方法,重定向它本身是HTTP GET。

您需要在项目中编写以下代码:

Route::get('/cart', 'CartContrloller@index')->name('cart-index');
Route::post('/cart', 'CartContrloller@store')->name('cart-store');

public function index()
{
    return view('card.form');
}

public function store(Request $request)
{
    dd($request->all());
    Cart::add($request->id, $request->name, 1, $request->price)->associate('App\Product');

    return redirect()->route('cart-index');
}

检查这个,如果你在你的url中再次播种表单参数,我确信你的刀片表单方法不是post,而是get,也许你的更改没有保存

你有购物车索引路由吗?是的,/cart route可以从url访问。如果url是GET请求,重定向函数将重定向,因为你有一个POST路由,它不会重定向,而且我可以看到你正在重定向到同一个存储函数,只需确保它不会调用自身。route::GET(“/cart”,”CartContrloller@index')->名称('cart-index');exists.btw,我可以在提交之前更改表单,并以我想要的任何价格将项目添加到我的购物车中?我应该被重新更正为:Route::post('/cart','CartContrloller@store')->name('cart-store');未返回到同一页…@laravel中的PinPiguin重定向无法进行post,因为laravel已准备好从post请求中获取一些数据。重定向使用HTTP GET方法。在这种情况下,这是不可能的
Route::get('/cart', 'CartContrloller@index')->name('cart-index');
Route::post('/cart', 'CartContrloller@store')->name('cart-store');

public function index()
{
    return view('card.form');
}

public function store(Request $request)
{
    dd($request->all());
    Cart::add($request->id, $request->name, 1, $request->price)->associate('App\Product');

    return redirect()->route('cart-index');
}