laravel - Laravel Nova + Spatie 媒体库
问题描述
尝试将 Laravel Nova 与 Spatie 媒体库一起使用。我创建了这样的上传字段:
Image::make('Logo')
->store(function (Request $request, $model) {
$model->addMediaFromRequest('logo')->toMediaCollection('manufacturers');
}),
接缝正常,但 Nova 仍在尝试将文件名保存到制造商表中的“徽标”列。
自定义此字段的原始示例是:
File::make('Attachment')
->store(function (Request $request, $model) {
return [
'attachment' => $request->attachment->store('/', 's3'),
'attachment_name' => $request->attachment->getClientOriginalName(),
'attachment_size' => $request->attachment->getSize(),
];
})
解决方案
我通过在模型上设置一个空的 mutator 找到了解决方法。在您的情况下,它将是:
class Manufacturer extends Model implements HasMedia
{
use HasMediaTrait;
public function setLogoAttribute() {}
//...
}
这是我的整个实现的一个例子。请注意,目前使用 Nova 1.0.6,该preview()
方法不起作用,它正在返回thumbnail()
url。
应用程序/图库项目
class GalleryItem extends Model implements HasMedia
{
use HasMediaTrait;
public function setImageAttribute() {}
public function registerMediaConversions(Media $media = null)
{
$this->addMediaConversion('thumbnail')
->fit(Manipulations::FIT_CROP, 64, 64);
$this->addMediaConversion('preview')
->fit(Manipulations::FIT_CROP, 636, 424);
$this->addMediaConversion('large')
->fit(Manipulations::FIT_CONTAIN, 1920, 1080)
->withResponsiveImages();
}
public function registerMediaCollections()
{
$this->addMediaCollection('images')->singleFile();
}
}
App/Nova/GalleryItem
class GalleryItem extends Resource
{
public static $model = 'App\GalleryItem';
public static $with = ['media'];
public function fields(Request $request)
{
return [
Image::make('Image')
->store(function (Request $request, $model) {
$model->addMediaFromRequest('image')->toMediaCollection('images');
})
->preview(function () {
return $this->getFirstMediaUrl('images', 'preview');
})
->thumbnail(function () {
return $this->getFirstMediaUrl('images', 'thumbnail');
})
->deletable(false);
];
}
}
推荐阅读
- arduino - Switch Case Arduino 的奇怪之处
- kotlin - Kotlin 函数引用是否有一个简单的空安全运算符?
- dart - Dart 私有数组
- amazon-dynamodb - 如何查询 AWS dynamodb 以获取每一小时、每一天和 30 天的数据?
- java - 我的 RecyclerViw 适配器出错,填充了 firebase 数据
- python - 如何执行存储在文件对象中的多个json对象
- linux - 为什么在这种情况下分配位置会导致无限循环?
- docker - 如何保存对 docker 容器和图像的更改
- java - 从发送到 AWS/Amazon SQS 的消息中删除无效字符
- bootstrap-4 - 关于 Accordion 的信息被推出,并且没有显示在 Bootstrap 上