Как создать общие правила проверки для ресурсов на Laravel Nova - PullRequest
0 голосов
/ 29 января 2019

Я знаком с созданием правил проверки для полей 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".

Можно создать общие правила, а не дублировать их как таковые

...