tramuntana-studio / nova-locale-switcher
Requires
- php: >=7.2
- laravel/nova: ^3.0
Requires (Dev)
- orchestra/testbench: ^5.0|^6.0
This package is auto-updated.
Last update: 2024-03-18 11:24:59 UTC
README
此工具提供了一个简单的下拉菜单,用于快速切换地区。此工具没有任何具体实现,因此当从下拉菜单中选择地区时发生什么完全取决于您。
安装
composer require eolica/nova-locale-switcher
如果您之前使用的是我们的 tramuntana-studio/nova-locale-switcher 包,请相应地进行修改。
使用方法
我们将通过一个简单的示例展示如何使用此工具。首先,您必须在 NovaServiceProvider 下的工具中注册该工具。
use Illuminate\Http\Request; public function tools() { return [ \Eolica\NovaLocaleSwitcher\LocaleSwitcher::make() ->setLocales(config('nova.locales')) ->onSwitchLocale(function (Request $request) { $locale = $request->post('locale'); if (array_key_exists($locale, config('nova.locales'))) { $request->user()->update(['locale' => $locale]); } }), ]; }
setLocales 方法期望一个关联数组,键是地区代码,值是地区名称。在此示例中,我们从 nova.php 配置文件设置地区。
return [ // Rest of Nova configuration ... /* |-------------------------------------------------------------------------- | Nova Locales |-------------------------------------------------------------------------- */ 'locales' => [ 'en' => 'English', 'de' => 'Deutsch', 'es' => 'Español', ], ];
对于处理地区切换,我们必须将一个 callable 传递给 onSwitchLocale 方法,在此示例中,我们使用从请求对象接收到的地区更新当前用户地区字段(这是一个我们添加到模型中的自定义字段)。
现在,对于设置应用程序地区,我们可以在 NovaServiceProvider 的 boot 方法中使用 Nova::serving() 方法。
use Laravel\Nova\Events\ServingNova; final class NovaServiceProvider extends NovaApplicationServiceProvider { /** * Bootstrap any application services. * * @return void */ public function boot() { parent::boot(); Nova::serving(function (ServingNova $event) { $user = $event->request->user(); if (array_key_exists($user->locale, config('nova.locales'))) { app()->setLocale($user->locale); } }); } ... }
最后一步是显示语言选择器。为此,我们必须 发布 Nova 的视图,执行以下命令
php artisan nova:publish
现在我们转到文件 /resources/views/vendor/nova/layout.blade.php,并在包含用户部分的下拉菜单之后添加 locale-switcher Vue 组件
<!-- Content --> <div> ... <dropdown class="ml-auto h-9 flex items-center dropdown-right"> @include('nova::partials.user') </dropdown> <!-- HERE! --> <locale-switcher></locale-switcher> </div>
这样就完成了!
这是您可以使用的一种解决方案,重要的是您可以切换到其他类型的实现,而不依赖于外部包。
变更日志
有关最近更改的更多信息,请参阅 CHANGELOG。
安全
如果您在此包中发现安全漏洞,请发送电子邮件至 dllobellmoya@gmail.com,而不是使用问题跟踪器。
许可
MIT 许可证(MIT)。有关更多信息,请参阅 许可文件。
