form(fn (Form $form, BaseRelationManager $livewire) => [ ...$livewire->form($form)->getComponents(), ...$livewire->getPivotFields(), ]); $this->after(function ($livewire, Model $record, CreateAction $action) { if ($livewire instanceof BaseRelationManager) { $relationship = $livewire->getRelationship(); if ($relationship instanceof HasMany) { $this->associateActionLog('Create and Associate', $livewire, $record, $action); } } }); $this->visible(function (BaseRelationManager $livewire) { if ($livewire instanceof ResourceRelationManager) { /** @var User $user */ $user = Auth::user(); return $user->hasRole(Role::ADMIN->value); } if ($livewire->getRelationship() instanceof BelongsToMany) { return false; } $ownerRecord = $livewire->getOwnerRecord(); $gate = Gate::getPolicyFor($ownerRecord); $ability = Str::of('addAny') ->append(Str::singular(class_basename($livewire->getTable()->getModel()))) ->__toString(); return is_object($gate) & method_exists($gate, $ability) ? Gate::forUser(Auth::user())->any($ability, $ownerRecord) : true; }); } }