You need to enable JavaScript to run this app. Laravel带locale前缀路由设置语言返回空白页如何高效解决
优惠活动
大模型
产品
解决方案
定价
更多

Laravel带locale前缀路由设置语言返回空白页如何高效解决

问题原因

你改写后的闭包路由仅声明了控制器调用数组,没有实际执行并返回控制器方法的结果,因此没有输出内容导致空白页。

快速修复单路由写法

如果仅需要给单个路由加语言设置逻辑,调整为主动调用控制器方法即可:

Route::get('{locale}/home', function ($locale) {
    App::setLocale(getLocale($locale));
    return app()->call([MachineController::class, 'home']);
});

最高效的批量实现方案

如果有多个路由都需要携带locale参数,推荐使用路由分组+中间件的方案,避免重复编写语言设置逻辑:

  1. 执行命令生成中间件
    php artisan make:middleware SetLocale
  2. 编辑中间件app/Http/Middleware/SetLocale.php的handle方法:
public function handle(Request $request, Closure $next)
{
    $locale = $request->route('locale');
    App::setLocale(getLocale($locale));
    return $next($request);
}
  1. 在app/Http/Kernel.php中注册中间件别名:
protected $middlewareAliases = [
    // 其他已有中间件
    'locale' => \App\Http\Middleware\SetLocale::class,
];
  1. 把所有需要带locale参数的路由放到统一分组中,不需要修改原有控制器逻辑:
Route::middleware('locale')->prefix('{locale}')->group(function () {
    Route::get('home', [MachineController::class, 'home']);
    // 新增同规则路由直接在此处添加即可,无需重复处理语言逻辑
    Route::get('list', [MachineController::class, 'list']);
});

内容的提问来源于stack exchange,提问作者henrikhannewijk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 16:21:04