Belongs To Many Field for simple manage Nested relation tree. Enables attaching relationships easily.
- Validation
- Show selected categories on Detail
- Ability to pass your own tree
- Ability to
Delayed Loadingdata when tree has many records ( example 10k+ ).
composer require phoenix-lib/nova-nested-tree-attach-manyThis field uses tree provided by kalnoy/nestedset package
This field uses riophae/vue-treeselect under the hood
use PhoenixLib\NestedTreeAttachMany\NestedTreeAttachManyField;public function fields(Request $request)
{
return [
NestedTreeAttachManyField::make('Offer Categories',"categories","App\Nova\Category"),
];
}Your model should has NodeTrait form package kalnoy/nestedset see RoadMap
class Category extends Model
{
use NodeTrait;
}Here are a few customization options
->searchable(bool $searchable)->withIdKey(string $idKey = 'id')// - id column name in your nested model->withLabelKey(string $labelKey = 'name')// - label column name in your nested model->withActiveKey(string $activeKey)// - active_status column name in your nested model used for disable options->withChildrenKey(string $childrenKey)// - children key in your nested model->withPlaceholder(string $placeholder)// - placeholder in tree select->withMaxHeight(int $maxHeight)->withSortValueBy(string $sortBy)// - @see https://vue-treeselect.js.org/#flat-mode-and-sort-values->withAlwaysOpen(bool $alwaysOpen)// - by default select is open, but you can change it behavior->withFlatten(bool $flatten)// - by default flatten is enabled, but you can change it behavior->useSingleSelect()// - ability for select only one value->useAsField()// - ability to write result to field without relations
use Whitecube\NovaFlexibleContent\Flexible;
use PhoenixLib\NovaNestedTreeAttachMany\NestedTreeAttachManyField;
/**
* Get the fields displayed by the resource.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function fields(Request $request)
{
return [
// ...
Flexible::make('Content')
->addLayout('Simple content section', 'tree_section', [
NestedTreeAttachManyField::make('Tree',"tree","App\Nova\Category")
->useAsField(),
])
];
} This field also respects policies: ie Role / Permission
- RolePolicy: attachAnyPermission($user, $role)
- RolePolicy: attachPermission($user, $role, $permission)
- PermissionPolicy: viewAny($user)
You can set min, max, size, required or custom rule objects
->rules('min:5', 'max:10', 'size:10', 'required', new CustomRule)`Feel free to suggest changes, ask for new features or fix bugs yourself.
