manmohanjit / nova-belongs-to-dependency
Extended Laravel Nova BelongsTo field that can depend on other fields
Installs: 142 146
Dependents: 1
Suggesters: 0
Security: 0
Stars: 10
Watchers: 1
Forks: 19
Open Issues: 6
Requires
- php: >=7.1.0
This package is auto-updated.
Last update: 2021-08-27 19:34:00 UTC
README
THIS PROJECT IS NO LONGER MAINTAINED, PLEASE USE
https://github.com/webparking/nova-belongs-to-dependency
This package is an extension of Laravel Nova's existing BelongsTo field and Vue components.
Installation
You can install this package on a Laravel app that uses Nova via composer:
composer require manmohanjit/nova-belongs-to-dependency
Usage
The following will list categories with type_id
equal to the value set in the first BelongsTo field.
use Manmohanjit\BelongsToDependency\BelongsToDependency; ... return [ ... BelongsTo::make('Type'), BelongsToDependency::make('User') ->dependsOn('type', 'type_id'), ... ];
Look at the example below for other use cases.
Example
Database Structure
- Type (id, name)
- Posts (id, type_id, category_id, title, body)
- Category (id, type_id, title)
We should only be able to assign categories to posts that belong to the same type.
This is how you would achieve it on the Nova category resource:
use Manmohanjit\BelongsToDependency\BelongsToDependency; ... return [ ... BelongsTo::make('Type'), BelongsToDependency::make('User') ->dependsOn('type', 'type_id'), ... ];
This would work if you used a text/enum type
field too.
use Manmohanjit\BelongsToDependency\BelongsToDependency; ... return [ ... Select::make('Type')->options([ 'post' => 'Post', 'page' => 'Page', ])>displayUsingLabels(), BelongsToDependency::make('User') ->dependsOn('type', 'type'), ... ];
Changelog
Please see CHANGELOG for more information on what has changed recently.
Credits
- nova-belongsto-depend (alternative)
- nova-dependency-container
This tool extends the base Laravel Nova BelongsTo field and is inspired by Nova Dependency Container.
License
The MIT License (MIT). Please see License File for more information.