optimistdigital/nova-lang

一个 Laravel Nova 工具。

1.3.0 2020-10-28 14:59 UTC

This package is auto-updated.

Last update: 2024-08-28 23:04:39 UTC


README

Laravel Nova 包,允许您设置内容的本地化。

NovaLang

安装

通过 Composer 在 Laravel Nova 项目中安装该软件包并运行迁移

# Install package
composer require optimistdigital/nova-lang

发布 nova-lang 配置文件并按您的喜好编辑它

php artisan vendor:publish --provider="OptimistDigital\NovaLang\ToolServiceProvider" --tag="config"

NovaServiceProvidertools() 方法中注册该工具

// 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 许可协议