12

Laravel Nova (v1.0.3) 内には、リソース フィールドの可視性をきめ細かく制御できるメソッドがいくつかあります (canSee、showOnDetail など)。フィールドが編集可能かどうかを制御するメソッドが見つかりません。フィールドを表示し、ユーザーが編集できないようにする (読み取り専用にする) にはどうすればよいですか?

たとえば、「Created At」フィールドを表示したいのですが、ユーザーが変更できるようにしたくありません。

4

8 に答える 8

3

App\Laravel\Nova\Fields\Fieldマクロ可能であるため、独自のメソッドを簡単に追加して読み取り専用にすることができます。

呼び出しのApp\Providers\NovaServiceProvider後にこの関数を追加できますparent::boot()

\Laravel\Nova\Fields\Field::macro('readOnly', function(){
    $this->withMeta(['extraAttributes' => [
        'readonly' => true
    ]]);

    return $this;
});

そして、このようにチェーンすることができます

Text::make("UUID")->readOnly()->help('you can not edit this field');
于 2018-12-06T08:53:33.600 に答える
0

July 2021, For Nova version 3.0, the readonly method can accept different types of arguments

Default:

Text::make('Email')->readonly()

Direct boolean:

Text::make('Email')->readonly(true/false)

Closure:

Text::make('Email')->readonly(function ($request) {
    return !$request->user()->isNiceDude();
}

Read more here https://nova.laravel.com/docs/3.0/resources/fields.html#readonly-fields

于 2021-07-07T07:33:15.537 に答える