*/ public static $model = PostBranchModel::class; /** * The single value that should be used to represent the resource when being displayed. * * @var string */ public static $title = 'name'; /** * The relationships that should be eager loaded on index queries. * * @var array */ public static $with = ['province']; /** * The columns that should be searched. * * @var array */ public static $search = [ 'id', 'name', ]; /** * Get the displayable label of the resource. */ public static function label(): string { return __('Post Branches'); } /** * Get the displayable singular label of the resource. */ public static function singularLabel(): string { return __('Post Branch'); } /** * Get the fields displayed by the resource. */ public function fields(NovaRequest $request): array { return [ ID::make()->sortable(), Select::make(__('Region'), 'region') ->displayUsingLabels() ->searchable() ->options(Region::values()) ->default(Region::AG) ->rules('required') ->onlyOnForms() ->fillUsing(function ($request, $model, $attribute, $requestAttribute) {}) ->resolveUsing(fn () => $this->province?->region) ->sortable(), Select::make(__('Province'), 'province_id') ->displayUsingLabels() ->searchable() ->rules('required') ->dependsOn(['region'], function ($field, $request, $formData) { if ($this->province || $formData->region) { $field->options(ProvinceModel::where('region', $formData->region ?: $this->province->region)->pluck('name', 'id')); } })->onlyOnForms(), BelongsTo::make(__('Province'), 'province', Province::class) ->exceptOnForms() ->sortable(), Text::make(__('Name'), 'name') ->translatable() ->sortable() ->rules(['required', 'max:255']), Textarea::make(__('Address'), 'address') ->translatable() ->alwaysShow() ->rules('nullable'), Textarea::make(__('Description'), 'description') ->translatable() ->alwaysShow() ->rules('nullable'), ]; } /** * Get the filters available for the resource. */ public function filters(NovaRequest $request): array { return [ new Filters\RegionFilter, ]; } }