optimistdigital / nova-lang
一个 Laravel Nova 工具。
1.3.0
2020-10-28 14:59 UTC
Requires
- php: >=7.1.0
README
Laravel Nova 包,允许您设置内容的本地化。
安装
通过 Composer 在 Laravel Nova 项目中安装该软件包并运行迁移
# Install package
composer require optimistdigital/nova-lang
发布 nova-lang
配置文件并按您的喜好编辑它
php artisan vendor:publish --provider="OptimistDigital\NovaLang\ToolServiceProvider" --tag="config"
在 NovaServiceProvider
的 tools()
方法中注册该工具
// in app/Providers/NovaServiceProvider.php public function tools() { return [ // ... new \OptimistDigital\NovaLang\NovaLang ]; }
定义地区
// in /config/nova-lang.php // ... 'locales' => [ 'en' => 'English', 'et' => 'Estonian', ], // OR 'locales' => function () { return Locale::all()->pluck('name', 'key'); },
在 /config/nova-lang.php 中定义地区后,您可以使用辅助函数。
$locales = nova_lang_get_all_locales(); //or you can use it in another package. 'locales' => nova_lang_get_all_locales(),
使用方法
创建字段
$fields[] = NovaLangField::make('Locale', 'locale');
如果您正在使用 nova-locale-field 等翻译包,您还可以提供 locale_parent_id。localeParentId 必须可以通过 URL 查询获得。请确保您已在数据库中定义了 locale_parent_id。
$fields[] = NovaLangField::make('Locale', 'locale', 'locale_parent_id')
按地区排序资源
//Your resource file, where you have returned $fields array public static function indexQuery(NovaRequest $request, $query) { $localeColumn = 'your_table_name' . 'locale' $query->where(function ($subQuery) use ($localeColumn) { $subQuery->where($localeColumn, nova_lang_get_active_locale()) ->orWhereNotIn($localeColumn, array_keys(nova_lang_get_all_locales())); }); return $query; }
致谢
许可协议
Nova 页面管理器是开源软件,采用 MIT 许可协议。