如何在Laravel Nova上为资源创建通用验证规则

时间:2019-01-29 12:04:04

标签: php laravel eloquent laravel-nova

我熟悉根据文档在“资源”字段中创建验证规则的情况:

Text::make('Name')
      ->sortable()
      ->rules('required', 'max:255'),

但是,我想知道是否有一种方法可以利用Nova Resources扩展的抽象Resource类,以创建将由扩展该类的所有Resources使用的通用验证规则。

我之所以要实现,是因为我拥有各种资源,这些资源的通用字段具有通用的验证规则。我发现在多个资源上创建将相同的验证规则附加到我的相同资源字段上有点多余。

资源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”具有相同的验证规则。

是否可以创建通用规则,而不是像这样复制它们?

0 个答案:

没有答案