重定向

未匹配的标注

重定向

当手动或通过<Link>元素进行非GET的Inertia请求时,您应确保始终响应正确的Inertia重定向响应。

例如,如果您的控制器正在创建新用户,则store端点应返回一个重定向到标准的GET端点,比如用户的index页面。Inertia将自动跟随此重定向并相应地更新页面。

class UsersController extends Controller
{
    public function index()
    {
        return Inertia::render('Users/Index', [
            'users' => User::all(),
        ]);
    }

    public function store(Request $request)
    {
        User::create(
            $request->validate([
                'name' => ['required', 'max:50'],
                'email' => ['required', 'max:50', 'email'],
            ])
        );

        return to_route('users.index');
    }
}

303 响应码

PUTPATCH或者 DELETE 请求后进行重定向时,必须使用 303 响应码,否则后续请求将不会被视为 GET 请求。 303 重定向与 302 重定向非常类似;但是后续请求明确更改为了 GET.

如果您使用我们官方提供的服务器适配器之一,则所有重定向都会自动转换为 303.

外部重定向

有时,在处理Inertia请求时需要将其重定向到外部网站甚至是另一个非Inertia端点。可以使用服务器端发起的 window.location 访问来实现,通过 Inertia::location() 方法。

return Inertia::location($url);

Inertia::location() 方法将生成一个带有目标URL的 409 Conflict 响应,并在 X-Inertia-Location 头部中包含该URL. 当客户端接收到此响应时,Inertia将自动执行 window.location = url 的访问。

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
发起讨论 只看当前版本


暂无话题~