Need help with nova-attach-many?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

dillingham
174 Stars 55 Forks MIT License 86 Commits 8 Opened issues

Description

BelongsToMany create / edit form component for Nova

Services available

!
?

Need anything else?

Contributors list

# 110,005
PHP
Shell
Laravel
multite...
17 commits
# 123,831
HTML
PHP
Laravel
dropbox
4 commits
# 237,980
PHP
Laravel
webpush
CSS
4 commits
# 299,825
locale
Laravel
jquery-...
jQuery
3 commits
# 276,343
Laravel
compose...
Shell
WordPre...
2 commits
# 117,781
PHP
Laravel
Google
Raspber...
2 commits
# 485,220
Laravel
nova
PHP
transla...
1 commit
# 185,789
PHP
self-ho...
dump
Postgre...
1 commit

Nova Attach Many

Latest Version on Github Total Downloads Twitter Follow

Belongs To Many create & edit form UI for Nova. Enables attaching relationships easily and includes validation.

attach-many

Installation

composer require dillingham/nova-attach-many

Usage

use NovaAttachMany\AttachMany;
public function fields(Request $request)
{
    return [
        AttachMany::make('Permissions'),
    ];
}

You can explicitly define the relationship & Nova resource:

AttachMany::make('Field Name', 'relationshipName', RelatedResource::class);

Display on detail:

This package only provides the create / edit views that BelongsToMany does not.

BelongsToMany should be used for displaying the table on detail views.

public function fields(Request $request)
{
    return [
        AttachMany::make('Permissions'),
        BelongsToMany::make('Permissions'),
    ];
}

Validation

You can set min, max, size or custom rule objects

->rules('min:5', 'max:10', 'size:10', new CustomRule)

Options

Here are a few customization options

  • ->showCounts()
    Shows "selected/total"
  • ->showPreview()
    Shows only selected
  • ->hideToolbar()
    Removes search & select all
  • ->height('500px')
    Set custom height
  • ->fullWidth()
    Set to full width
  • ->showRefresh()
    Request the resources again
  • ->showSubtitle()
    Show the resource's subtitle
  • ->help('Tip: help text')
    Set the help text

All Options Demo

Relatable

The attachable resources will be filtered by relatableQuery() So you can filter which resources are able to be attached

Being Notified of Changes

You can add a method to the resource to be notified of the changes that have happened:

The method must be a camel cased version of the attribute name, followed by

Synced
. For example:
public function fields(Request $request)
{
    return [
        AttachMany::make('Permissions'),
    ];
}
public function permissionsSynced(array $changes)
{
    $changes['attached']; // An array of IDs of attached models
    $changes['detached']; // An array of IDs of detached models
    $changes['updated']; // An array of IDs of updated models
}

Authorization

This field also respects policies: ie Role / Permission - RolePolicy: attachAnyPermission($user, $role) - RolePolicy: attachPermission($user, $role, $permission) - PermissionPolicy: viewAny($user)


Author

Hi 👋, Im Brian D. I created this Nova package and others

Hope you find it useful. Feel free to reach out with feedback.

Follow me on twitter: @imbriand

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.