【问题标题】:Laravel localization with resource methodLaravel 本地化资源方法
【发布时间】:2019-01-10 08:39:29
【问题描述】:

我只是在创建带有本地化的路线时遇到了困难。

应从 URL 读取语言: 域/en/汽车/ 域/法国/汽车/ 域/en/汽车/创建 域/法国/汽车/编辑 ...

我使用资源方法来创建路由: Route::resource('cars','CarsController');

类似于Route::get,如何在URL中使用占位符来指定语言?

我不想一开始就将所有路线都更改为“Route::get”。或者有没有更好的方法来实现本地化?

【问题讨论】:

    标签: laravel localization resources


    【解决方案1】:

    Route resources 声明还允许您像在 get 路由声明中一样指定路由占位符

    Route::resource("/domain/{language}/cars", "CarsController");
    

    在您的 CarsController 中,按如下方式使用它

    class CarsController
    {
        public index ($language)
        {
            App::setLocale($language);
            ...
        }
    
        public show ($language, $id)
        { ... }
    }
    

    或者更好

    class CarsController
    {
        public __construct ()
        {
            if ($currentRoute = Route::current()) {
                $language = $currentRoute->getParameter('language');
                App::setLocale($language);
            }
            // ...
        }
    
        public show ($language, $id)
        { ... }
    
        public show ($language, $id)
        { ... }
    }
    

    编辑:添加了区域设置。在构造函数和每个 Controller 方法中

    【讨论】:

    • 我如何使用 Blade 中的 {{ __('file.text') }} 函数获得自动化?
    • 您必须设置区域设置。我已经更新了答案。
    • 嘿,我知道你的答案是正确的.. 但是.. 恐怕少了一件:我收到以下错误:无法解析的依赖解析 [Parameter #0 [ $语言 ]] 在 App\Http\Controllers\CarsController 类中它缺少在哪里?
    • 我的疏忽。我添加了以下内容。我已经更新了构造方法。这是一种更清洁的使用方式,还可以为您解决问题。
    • 再补充一点,您稍后可能会考虑使用中间件而不是 Controller 的构造函数。这样一来,它也可以更轻松地在其他控制器中使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    • 2011-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多