我是新来的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');
当我点击submit按钮时,URL会被产品数据填满,但我会在同一个页面上看到,而不是被重新定向到购物车。
我不知道为什么会发生这种事。这是一种至少能找出什么东西坏了的方法吗?我使用的是5.7版本。
您需要在项目中编写以下代码:
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,也许你的更改没有保存!
在控制器中,您需要在重定向()中使用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!');
我想这里的最佳实践可能是使用laravel的重定向返回:
return redirect()->back()->with('success_message','any message you want')
您不能重定向到post方法,post路由除了:csrf_令牌和一些带有post方法的数据,重定向它本身就是HTTP GET。
问题内容: 我希望ajax发布上的成功可以转到主页。由于某种原因,我一直做错了。知道我应该怎么做才能解决这个问题吗? 阿贾克斯 问题答案: 希望以上内容对我有所帮助,因为我遇到了同样的问题
问题内容: /* * @api {post} /logout Logout from system * @apiName Logout * @apiGroup Login / router.post(“/logout”, function (req, res) { req.logout(); req.session.destroy(); return res.redirect(“/”); });
问题内容: 我正在使用maatwebsite / excel库创建excel文件,然后下载我的文件 在我的控制器中,我这样做: 这是我生成excel文件的功能: 但是在下载excel文件后,我无法重定向到路线或视图,并且我也尝试使用: 路线: 过滤: 但无论如何都没用,下载我的文件后还有另一种重定向的方式? 提前谢谢! 问题答案: 无法完成。问题是,如果您向用户浏览器发送下载指令,则实际上是在发送
问题内容: 我很难理解“发布/重定向/获取”的确切过程。 我已经在这个网站和网络上梳理了几个小时,除了“这里是概念”,找不到其他东西。 如何理解发布/重定向/获取模式? 问题答案: 您可能会从研究中知道,-redirect- 看起来像这样: 客户获得带有表单的页面。 表格发送到服务器。 服务器执行该操作,然后重定向到另一个页面。 客户端遵循重定向。 例如,假设我们具有以下网站结构: (显示帖子列表
所以我正在尝试为内部项目开发一个rest API,我遇到了一个问题,当表单请求验证失败时,它会显示@index响应。 所以我有两条路线; 列出所有客户端,创建一个新客户端,我在方法上获得了一个表单请求验证器,该验证器检查为客户端提供的名称。 我想要的是,当验证器失败时,它会显示带有验证错误的JSON响应。但我认为,验证失败了,所以它重定向回同一个页面,但重定向是GET,而不是POST,因此它列出了
我有一个网页,这是一个邮政路线。这个页面有一个删除按钮,可以路由到另一个POST路由,在这里我删除指定的数据库行并重定向回第一个页面。 问题是,当我使用任何back()或reway()函数时,它们似乎会产生对上一个URL的GET请求。但上一页是仅限POST页。 如何将POST请求和POST数据重定向回?