当前位置: 首页 > 知识库问答 >
问题:

如何重定向在Laravel形式上发布请求?

宋新知
2023-03-14

我是新来的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版本。

共有3个答案

顾亦
2023-03-14

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

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,也许你的更改没有保存!

花健
2023-03-14

在控制器中,您需要在重定向()中使用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!');

丌官嘉良
2023-03-14

我想这里的最佳实践可能是使用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数据重定向回?