Laravel Nova需要在每次编辑时上传图片

时间:2019-07-04 13:21:48

标签: php laravel laravel-nova

我正在使用laravel-nova,在一种资源上,我正在使用Image字段:

use Laravel\Nova\Fields\Image;

Image::make('Top Image', 'hero_image')
      ->help('Upload an image to display as hero')
      ->disk('local')
      ->maxWidth(400)
      ->prunable()
      ->rules('required')
      ->hideFromIndex(),

到目前为止非常好,但是由于它是必需的,因此每次我要编辑资源时我都必须上传(相同)图像,这有点烦人,而且我不想使其不必需。

那么,对此有解决方案吗?

1 个答案:

答案 0 :(得分:2)

首先,您希望使其仅在创建时才需要,因此应使用->creationRules('required')而不是->rules('required')

但是随后的问题是用户可以删除照片,并保存没有图像的资源。

要解决此问题,只需使用->deletable(false)禁用该字段上的删除功能即可。

Image::make('Top Image', 'hero_image')
    ->help('Upload an image to display as hero')
    ->disk('local')
    ->maxWidth(400)
    ->prunable()
    ->creationRules('required')
    ->deletable(false)
    ->hideFromIndex(),

这将使您无需每次都上传图像即可更新资源。而且用户只能用其他图像替换原始图像。