我有一个实体,该实体具有EAV属性图像,用于在业务对象中显示一个图像。此图像是我从API调用中获得的图像......没有什么特别的......但我希望对其进行修改,因为API将发送多个图像。因此,我希望能够保存所有这些图像并显示所有这些图像。最好的方法是什么?是否必须添加另一个属性?但是我最多只能收到10张图片...我该怎么做呢?第一次我想在我的实体中添加9个字段image 2 image 3 image 4等等...但是我认为有一种更有效的方法来保存和显示我的图片。
提前感谢您的帮助
(我是magento 2的初学者)
这里是我的控制器保存照片后,从API获得它的一部分
case 'mainPhoto':
if (
is_array($retailerData['mainPhoto']) &&
isset($retailerData['mainPhoto']['publicUrl'])
) {
$imageUrl = $retailerData['mainPhoto']['publicUrl'];
$fileName = baseName($imageUrl);
$newFileName = $this->getMediaSellerPath() . DIRECTORY_SEPARATOR . $fileName;
$result = $this->file->read($imageUrl, $newFileName);
if ($result) {
$model->setMediaPath($fileName);
}
}
break;
case 'photos':
$test = [];
foreach ($value as $key => $item) {
if (
is_array($item) &&
isset($item['publicUrl'])
) {
$imageUrl = $item['publicUrl'];
$fileName = baseName($imageUrl);
$newFileName = $this->getMediaSellerPath() . DIRECTORY_SEPARATOR . $fileName;
$test[] = $newFileName;
$result = $this->file->read($imageUrl, $newFileName);
if ($result) {
$model->setCustomAttribute(RetailerAttributeInterface::PHOTOS, implode(",", $test));
}
}
}
break;
}
实际上,我可以保存在数据库中的照片由逗号分隔,但当我在模块中,我有错误
无法收集统计信息!警告!stat():无法对/var/www/xxx/pub/media/seller/进行统计
如何在自定义属性中保存由逗号分隔的两个图像而不出现此问题
2条答案
按热度按时间q3qa4bjr1#
首先,您需要将图像保存到pub/media中,然后创建一个带有文本类型的属性,并将整个图像名称保存在该字段中(用','分隔),然后在显示时,您只需调用该字段中的数据,并使用函数剪切','后的数据,然后调用pub/media以获取特定的图像路径。
ctehm74n2#
没关系,我已经将EAV属性类型从图像更改为文本,我没有这个错误。
谢谢