optimistdigital/nova-locale-field

此包已被废弃且不再维护。没有建议的替代包。

Laravel Nova 字段。


README

此包已被弃用,推荐使用 Nova Translatable

Laravel Nova 包允许您管理模型的多个本地化版本。

截图

Detail View

Form View

Index View

安装

通过 Composer 在 Laravel Nova 项目中安装此包

composer require optimistdigital/nova-locale-field

使用方法

准备模型和数据库

该字段需要一些数据库更改——即模型需要两个新列:一个用于地区和一个用于引用地区父模型。

您可以设置任何您想要的列名。列名在创建字段时传递给字段。

建议名称 类型(MySQL / Eloquent) 可为空 示例值 描述
地区 locale VARCHAR / string en_US 地区文本列,最大尺寸取决于您使用的地区类型(例如 enen_US)。
地区父ID locale_parent_id BIGINT / bigInteger 1 地区父引用列(外键,尽管实际外键是可选的)

示例迁移

Schema::table('some_model_table', function ($table) {
    $table->string('locale');
    $table->bigInteger('locale_parent_id')->nullable();

    // Optionally, add a foreign key
    $table->foreign('locale_parent_id')->references('id')->on('some_model_table');
});

创建字段

此字段与其它 Nova 字段在构造函数(::make())参数上略有不同。

# 参数 类型 描述
1 $name string 字段的显示名称,作为索引字段中的列标题和在地区选择字段中的名称显示给用户。
2 $localeAttribute string 地区值的属性(列)名称。
3 $localeParentAttribute string 地区父ID的属性(列)名称。
use OptimistDigital\NovaLocaleField\LocaleField;

LocaleField::make('Locale', 'locale', 'locale_parent_id')
    ->locales(['en' => 'English', 'et' => 'Estonian']) // Optional when you've set a default
    ->maxLocalesOnIndex(4) // Optional, defaults to 4

选项

您可以使用选项名称作为函数传递给字段的可能选项,例如 ->maxLocalesOnIndex(4)

选项 类型 默认值 描述
locales array [] 作为键值对(['id' => 'value'])的数组中的地区。
maxLocalesOnIndex int 4 在索引视图中显示的地区数量。如果超出这个数量,地区只能在详情视图中可见。

配置

配置文件

您可以通过发布配置文件并在那里编辑默认值(除了地区之外)来编辑配置文件。

要发布配置文件,请运行以下 artisan publish 命令

php artisan vendor:publish --provider="OptimistDigital\NovaLocaleField\FieldServiceProvider" --tag="config"

默认区域设置

默认区域设置可以通过配置文件中的闭包或数组来定义。

可以在每个字段的基础上使用 ->locales([]) 函数来覆盖此默认值。

过滤器

该包还提供了用于区域设置的select类型过滤器。

使用区域设置过滤器

要使用区域设置过滤器,只需将其添加到资源 filters() 函数返回的数组中。将区域字段名称作为唯一参数传递给 constructor 或静态 make 函数。

您还可以通过在过滤器上调用 ->locales([]) 来覆盖默认显示的区域设置选项。这是可选的,如果不设置,过滤器将使用默认区域设置。

use \OptimistDigital\NovaLocaleField\Filters\LocaleFilter;

public function filters(Request $request)
    {
        return [
            LocaleFilter::make('locale')
                ->locales(NovaEcommerce::getLocales()), // <- Optional

            // OR

            new LocaleFilter('locale'),
        ];
    }

致谢

许可证

该项目是开源软件,许可协议为MIT许可证