在我的控制器中,我有一个重定向到路线的方法:
return Redirect::route('/management');
这是我的
routes/web.php
:
Route::get('/management', function () {
return Inertia::render('Management');
});
但是,它会抛出错误,提示
Route [management] not defined
。
Redirect::route()
方法需要一个命名路线,您尚未在routes/web.php
文件中定义该路线。
为了使用命名路线,您需要将路线更改为:
Route::get('/management', function () {
return Inertia::render('Management');
})->name('management'); // added
之后,您可以像这样重定向到 Inertia 中的命名路由:
return Redirect::route('management');
由于我们使用的是命名路由,而不是 URL,因此您不应在
/
调用中包含前导 route()
。
如果您在 Laravel 项目中手动设置 Inertia(不使用预配置的样板),则可能会遇到在 JavaScript 中访问 Laravel 命名路由的问题。以下是确保您的路线正常运行的方法:
composer require tightenco/ziggy
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />
<!-- Include Laravel routes in JavaScript -->
@routes
@viteReactRefresh
@vite('resources/js/app.jsx')
@inertiaHead
</head>
<body>
@inertia
</body>
</html>
常见问题 如果您发现 @routes 无法识别,而是呈现为纯文本,请尝试将其与括号一起使用,如下所示:
@routes()