[英]How to redirect in Laravel form on Post request?
我是 Laravel 的新手,遇到了以下問題:
我有一個應該根據 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>
這是 CartController:
public function store(Request $request)
{
Cart::add($request->id, $request->name, 1, $request->price)->associate('App\Product');
return redirect()->route('cart-index')->with('success_message', 'Item was added to your cart!');
}
這是路線:
Route::post('/cart', 'CartContrloller@store')->name('cart-store');
當我點擊提交按鈕時,URL 會填充產品數據,但我仍然在同一頁面上,而不是被重新注冊到購物車。
我不知道為什么會這樣。 有沒有辦法至少找出損壞的東西? 我使用的是 5.7 版本。
我想這里的最佳實踐可能是使用 laravel 的重定向返回:
return redirect()->back()->with('success_message','any message you want')
你不能重定向到 post 方法,post 路由除了:csrf_token 和一些帶有 POST 方法的數據,重定向它自己是 HTTP GET。
在您的控制器中,您需要在 redirect() 中使用 route('cart-index')
public function store(Request $request)
{
Cart::add($request->id, $request->name, 1, $request->price)->associate('App\Product');
return redirect(route('cart-index'))->with('success_message', 'Item was added to your cart!');
}
或者如果您需要重定向回嘗試:
return redirect()->back()->with('success_message', 'Item was added to your cart!');
你需要在你的項目中編寫這些代碼:
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 中播種表單參數,我確定您的刀片表單方法沒有發布,它獲取,也許您的更改沒有保存!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.