Laravel Nova 要求在每次编辑时上传图片
Laravel Nova required image upload on every edit
我正在使用 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(),
到目前为止一切顺利,但由于它是必需的,所以我每次想编辑资源时都必须上传(相同的)图像,这有点烦人,我不想让它不需要。
那么,有解决办法吗?
首先,你想让它只在创建时需要,所以你应该使用 ->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(),
这样您就可以更新资源,而不必每次都上传图片。并且用户只能用另一张图片替换原始图片。
我是这样整理的,我试着先看看我是否已经把图像保存在我的模型上,然后再确定我是否需要它。
$imageRules = $this->company_logo ? 'sometimes' : 'required';
return [
Image::make('Shop Logo', 'company_logo')
->disk('images')
->rules($imageRules, 'mimes:png')
->disableDownload()->deletable(false),
希望对其他人有所帮助。
我正在使用 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(),
到目前为止一切顺利,但由于它是必需的,所以我每次想编辑资源时都必须上传(相同的)图像,这有点烦人,我不想让它不需要。
那么,有解决办法吗?
首先,你想让它只在创建时需要,所以你应该使用 ->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(),
这样您就可以更新资源,而不必每次都上传图片。并且用户只能用另一张图片替换原始图片。
我是这样整理的,我试着先看看我是否已经把图像保存在我的模型上,然后再确定我是否需要它。
$imageRules = $this->company_logo ? 'sometimes' : 'required';
return [
Image::make('Shop Logo', 'company_logo')
->disk('images')
->rules($imageRules, 'mimes:png')
->disableDownload()->deletable(false),
希望对其他人有所帮助。