Skip to content

metalcamp/laravel-nova-field-dynamic-select

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dynamic select field for Laravel Nova

This field allows you to dynamically fill contents of a select based on values in other dynamic select fields.

Field is based on [nova-belongs-to-dependency]{https://novapackages.com/packages/manmohanjit/nova-belongs-to-dependency} but instead of selecting model, you can select custom values.

Usage

Class have 2 special methods on top of default Select from Laravel Nova. dependsOn can take a list of other fields this one depends on. options can be either an array or a callable. If its a callable, it will receive array with selected dependency values as first argument and should return an array of items to be shown on the select field.

Example:

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')
            ,
        ];
    }

About

Dynamic Select field for Laravel Nova

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 51.4%
  • Vue 44.1%
  • JavaScript 4.3%
  • CSS 0.2%