kayacekovic/laravel-nova-field-dynamic-select

一个 Laravel Nova 字段。

1.5.9 2022-09-28 16:25 UTC

README

该字段允许您根据其他动态选择字段中的值动态填充选择框的内容。

字段基于 nova-belongs-to-dependency,但您可以选择自定义值而不是选择模型。

安装

composer require kayacekovic/laravel-nova-field-dynamic-select

使用方法

类在 Laravel Nova 的默认选择字段之上提供了2个特殊方法。

  • dependsOn 可以接收一个列表,列出这个字段所依赖的其他字段。
  • options 可以是一个数组或一个可调用对象。

如果它是一个可调用对象,它将接收一个数组作为第一个参数,该数组包含选定的依赖值,并且应该返回一个要显示在选择字段上的项的数组。

示例

public function fields(Request $request)
{
    return [
        ID::make()->sortable(),

        DynamicSelect::make('Country', 'country')
            ->options(['US' => 'United States', 'UK' => 'United Kingdom'])
            ->rules('required')
        ,

        DynamicSelect::make('Provider', 'provider')
            ->options(['PR' => 'Premium', 'ST' => 'Standard'])
            ->rules('required')
        ,

        DynamicSelect::make('Product', 'product')
            ->dependsOn(['country', 'provider'])
            ->options(function($values) { 
                if($values['country'] === 'UK' && $values['provider'] === 'PR') {
                    return ['A' => 'Fast shipping', 'B' => 'Normal shipping', 'C' => 'Free shipping'];
                } else {
                    return ['A' => 'Fast shipping', 'B' => 'Normal shipping'];
                }
            })
            ->rules('required')
        ,
    ];
}