lupennat / conditionals
该包已被废弃,不再维护。没有推荐替代包。
Laravel Nova - 条件语句
v1.1.0
2023-05-22 13:07 UTC
Requires
- php: ^7.4|^8.0
- laravel/nova: ^4.12
- nova-kit/nova-packages-tool: ^1.3
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.16
README
要求
php: ^7.4 | ^8
laravel/nova: ^4
安装
您可以通过composer在使用Nova的Laravel应用中安装此包
composer require lupennat/conditionals
用法
条件字段
条件字段可以根据其他字段的值切换字段。它使用Nova的本地dependsOn
来拦截字段更改,条件将在所有页面(索引、详情、表单)中解析。
use Laravel\Nova\Fields\Boolean; use Laravel\Nova\Fields\FormData; use Laravel\Nova\Fields\Hidden; use Laravel\Nova\Fields\Number; use Laravel\Nova\Fields\Select; use Laravel\Nova\Fields\Text; use Laravel\Nova\Http\Requests\NovaRequest; use Lupennat\Conditionals\Conditional; class Item extends Resource { public function fields(Request $request) { return [ Select::make(__('Type'), 'type')->options([ 'boolean' => 'Boolean', 'number' => 'Number', 'not-exists' => 'No Value', 'text' => 'Text' ]), Conditional::make(__('Value')) ->dependsOn(['type'], function (Conditional $field, NovaRequest $novaRequest, FormData $formData) { return match ($formData->type) { 'boolean' => Boolean::make(__('Value'), 'value')->rules('required') 'number' => Number::make(__('Value'), 'value')->rules('required', 'min:10', 'max:100'), 'text' => Text::make(__('Value'), 'value')->rules('required'), default => Hidden::make(__('Value'), 'value')->nullable()->fillUsing(function ($request, $model, $attribute) { // always reset value to null $model->{$attribute} = null; }) } }), ]; } }
如果您不希望存储/更改值,可以返回null而不是字段。
当返回null时,将使用不可填写的字段。
条件字段
条件多字段可以用于显示任何多关系的单个字段。
use Laravel\Nova\Fields\Boolean; use Laravel\Nova\Fields\FormData; use Laravel\Nova\Fields\Hidden; use Laravel\Nova\Fields\Number; use Laravel\Nova\Fields\Select; use Laravel\Nova\Fields\Text; use Laravel\Nova\Http\Requests\NovaRequest; use Lupennat\Conditionals\ConditionalMany; class ItemList extends Resource { public function fields(Request $request) { return [ ID::make()->sortable(), ConditionalMany::make('Item Value', 'items') ->each( function ($item) { return match ($item->type) { 'boolean' => Boolean::make(__('Value'), 'value') 'number' => Number::make(__('Value'), 'value'), 'text' => Text::make(__('Value'), 'value'), default => Hidden::make(__('Value'), 'value') } } ) ]; } }
条件多字段只能在索引和详情页上使用。