skip to Main Content

I have an entity which has an EAV attribute image to display one image in the BO.
This image is an image I get from an API call…nothing extraordinary…
But I would like to modify it because the API will send several images.
So I would like to have the possibility of saving all these images and to display all these images.
What is the best way to do it?
Do I have to add another attribute?
? But as I can receive 10 images max… how can I do it?
In a first time I was think adding in my entity 9 field image2 image3 image4 etc…But I think there is a way more efficient to save and display my images.

Thanks in advance for your help

(I am beginner in magento 2)

Here is a part of the part of my controller saving the photos after getting it from the 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;
        }

Actually I can save in the database the photos separated by a comma but when i get in the module I have the error

Cannot gather stats! Warning!stat(): stat failed for /var/www/xxx/pub/media/seller/medium_lRmMjKLDWV.jpg,medium_vyhkzfEhho.jpg

How can I save the 2 images separated by a comma in a custom attribute without this problem

2

Answers


  1. Chosen as BEST ANSWER

    It's ok I have changed my EAV attribute type from image to text and I do no have this error.

    Thanks


  2. First, you need to save the image to pub/media, then create an attribute with the type of text and save the entire image name in this field (separate each other with a ‘,’) then when displaying you just call the data in this field and use the function to cut the data after the ‘,’ and call pub/media to get the specific image path.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search