Я знаком с созданием правил проверки для полей Resource согласно документации:
Text::make('Name')
->sortable()
->rules('required', 'max:255'),
Однако мне было интересно, есть ли способ использовать абстрактный класс Resource
, который был расширен NovaРесурсы, чтобы создать общие правила проверки, которые будут использоваться всеми Ресурсами, расширяющими этот класс.
Я пытаюсь достичь этого, потому что у меня есть различные ресурсы с общими полями, которые имеют общие правила проверки.Я считаю излишним создание присоединения одинаковых правил проверки к одним и тем же полям ресурсов для нескольких ресурсов.
Ресурс A:
/**
* Get the fields displayed by the resource.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function fields(Request $request)
{
return [
ID::make()->sortable(),
Text::make('Slug')
->rules('required', 'slug', 'min:2', 'max:30')
->creationRules('unique:slug,name')
->updateRules('unique:slug,name,{{resourceId}}'),
Text::make('Name')
->rules('required', 'max:255'),
HasMany::make('Users'),
Boolean::make('Status', 'is_active')
];
}
Ресурс B:
**
* Get the fields displayed by the resource.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function fields(Request $request)
{
return [
ID::make()->sortable(),
Text::make('Slug')->hideFromIndex()
->hideFromIndex()
->rules('required', 'slug', 'min:2', 'max:30')
->creationRules('unique:slug,name')
->updateRules('unique:slug,name,{{resourceId}}'),
Text::make('Label'),
->rules('required', 'max:255'),
Text::make('Formulae'),
HasMany::make('Test Template', 'Questionnaires', 'App\Nova\Resources\Questionnaire'),
];
}
Ресурсы A и B используют одни и те же правила проверки для поля "Slug".
Можно создать общие правила, а не дублировать их как таковые