magento 2 comment télécharger des images et des vidéos dans un module personnalisé


15

J'utilise magento 2.1

J'ai besoin de télécharger plusieurs images et vidéos à l'aide du composant ui

Comme magento-admin -> produits -> caralog -> produit

entrez la description de l'image ici

que dois-je faire pour y parvenir?


M2 utilise toujours un code de style ancien pour 'Image et vidéo' sans UI_Component? As tu besoin de ça?
Sohel Rana

Réponses:


7

Enfin j'ai la réponse

Je réfère ce module et l'implémente dans mon module personnalisé

Trouvez ci-dessous le code utile:

suivant les étapes ci-dessous

1) créez layout.xml

[vendor]/[module]/operation/view/adminhtml/layout/layout_edit.xml

<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">

    <body>
            <referenceContainer name="content">
                <uiComponent name="sample_form"/>
            </referenceContainer>
            <referenceContainer name="sample_form">
                <block name="gallery" class="[vendor]\[module]\Block\Adminhtml\Grid\Helper\Form\Gallery">
                    <arguments>
                        <argument name="config" xsi:type="array">
                            <item name="label" xsi:type="string" translate="true">Images</item>
                            <item name="collapsible" xsi:type="boolean">true</item>
                            <item name="opened" xsi:type="boolean">false</item>
                            <item name="sortOrder" xsi:type="string">22</item>
                            <item name="canShow" xsi:type="boolean">true</item>
                            <item name="componentType" xsi:type="string">fieldset</item>
                        </argument>
                    </arguments>
                    <block class="[vendor]\[module]\Block\Adminhtml\Grid\Helper\Form\Gallery\Content" as="content" template="[vendor]_[[module]::helper/gallery.phtml">
                        <arguments>
                            <argument name="config" xsi:type="array">
                                <item name="parentComponent" xsi:type="string">sample_form.sample_form.block_gallery.block_gallery</item>

                            </argument>
                        </arguments>

                    </block>
                </block>
            </referenceContainer>

    </body>
</page>

2) Créer un bloc d'assistance

[vendor]/[module]/Block/Adminhtml/Grid/Helper/Form/Gallery.php

namespace [vendor]\[module]\Block\Adminhtml\Grid\Helper\Form;

use Magento\Framework\Registry;
use Magento\Catalog\Model\Product;
use Magento\Eav\Model\Entity\Attribute;
use Magento\Catalog\Api\Data\ProductInterface;

class Gallery extends \Magento\Catalog\Block\Adminhtml\Product\Helper\Form\Gallery
{
    /**
     * @var here you set your ui form 
     */
    protected $formName = 'sample_form';

}

3) Créer un bloc de formulaire d'aide

[vendor]\[module]\Block\Adminhtml\Grid\Helper\Form\Gallery\Content.php

namespace [vendor]\[module]\Block\Adminhtml\Grid\Helper\Form\Gallery;

use Magento\Framework\Data\Form\Element\AbstractElement;
use Magento\Backend\Block\Media\Uploader;
use Magento\Framework\View\Element\AbstractBlock;
use Magento\Framework\App\Filesystem\DirectoryList;

class Content extends \Magento\Catalog\Block\Adminhtml\Product\Helper\Form\Gallery\Content
{


    protected function _prepareLayout()
    {
        $this->addChild('uploader', 'Magento\Backend\Block\Media\Uploader');

        $a = $this->getUploader()->getConfig()->setUrl(
            $this->_urlBuilder->addSessionParam()->getUrl('[vendor]/grid_gallery/upload')/* here set you upload Controller */
        )->setFileField(
            'image'
        )->setFilters(
            [
                'images' => [
                    'label' => __('Images (.gif, .jpg, .png)'),
                    'files' => ['*.gif', '*.jpg', '*.jpeg', '*.png'],
                ],
            ]
        );

    }


    public function getImageTypes()
    {
        return '[]';
    }

    public function getMediaAttributes()
    {
        return '[]';
    }

}

Remarque : - vous devez vous étendre correctement au-dessus des deux blocs

4) Créer un modèle

Vous devez copier le formulaire gallery.phtml vendor/magento/module-product-video/view/adminhtml/templates/helper/gallery.phtml et le modifier selon vos besoins et vos nuisibles dans votre module[vendor]/[module]/view/adminhtml/templates/helper/gallery.phtml

S'il vous plaît laissez-moi savoir en commentaire si vous avez besoin d'aide


je reçois une erreur car le document OBJECT DOM doit être créé
vijay b

@vijayb pouvez-vous s'il vous plaît mettre cette erreur ici
Deexit Sanghani


@vijayb J'espère que vous travaillez sur le formulaire ui alors définissez ici votre nom de formulaire uiprotected $formName = 'your_ui_form
Deexit Sanghani

j'ai suivi chaque étape exactement comme expliqué dans answer.do nous devons créer un autre fichier pour définir ce composant Ui ??
vijay b

0

Pour ajouter une vidéo dans Magento 2, vous devez suivre ces étapes:

  1. Générez une clé API Youtube.
  2. Intégration de la clé API Youtube à
  3. Magento 2. Intégration de l'URL de la vidéo Youtube au produit.

0

La réponse de Deexit Sanghani peut être obsolète car j'utilise magento2.2.2 v et l'emplacement du fichier xml ne fonctionne pas pour moi, [vendor]/[module]/operation/view/adminhtml/layout/layout_edit.xmlmais tout le reste est à peu près aussi bien voté. Et voici ce qui a fonctionné pour moi, jetez un œil dans ../vendor/magento/module-product-video/view/adminhtml/ui_component/product_form.xmlet dans l'emplacement de votre module: ../app/code/[vendor]/[module]/view/adminhtml/ui_component/your_ layout_edit.xmldans l' <form></form>ajout:

    <htmlContent name="gallery" sortOrder="22">
        <argument name="data" xsi:type="array">
            <item name="wrapper" xsi:type="array">
                <item name="label" xsi:type="string" translate="true">My Custom Images And Videos</item>
                <item name="collapsible" xsi:type="boolean">true</item>
                <item name="opened" xsi:type="boolean">false</item>
            </item>
        </argument>
        <settings>
            <wrapper>
                <canShow>true</canShow>
                <componentType>fieldset</componentType>
            </wrapper>
        </settings>
        <block name="gallery" class="[vendor]\[module]\Block\Adminhtml\[Entity]\Helper\Form\Gallery">
            <!--<arguments>
                <argument name="config" xsi:type="array">
                    <item name="label" xsi:type="string" translate="true">Images And Videos</item>
                    <item name="collapsible" xsi:type="boolean">true</item>
                    <item name="opened" xsi:type="boolean">false</item>
                    <item name="sortOrder" xsi:type="string">22</item>
                    <item name="canShow" xsi:type="boolean">true</item>
                    <item name="componentType" xsi:type="string">fieldset</item>
                </argument>
            </arguments>-->
            <block class="[vendor]\[module]\Block\Adminhtml\[Entity]\Helper\Form\Gallery\Content" as="content">
                <arguments>
                    <argument name="config" xsi:type="array">
                        <item name="parentComponent" xsi:type="string">ui_component_form.ui_component_form.block_gallery.block_gallery</item>
                    </argument>
                </arguments>
                <block class="Magento\ProductVideo\Block\Adminhtml\Product\Edit\NewVideo" name="new-video" template="Magento_ProductVideo::product/edit/slideout/form.phtml"/>
            </block>
        </block>
    </htmlContent> 

J'ai réussi à télécharger des rôles d' image add personnalisés etc .. mais pas dans la base de données de sauvegarde encore contre une rangée, NOTE: Il faut beaucoup d'attention pour faire cela fonctionne pour vos besoins, écrasez à vos besoins , par exemple gallery.pthml, getImagesJson(), getImageTypes(), getMediaAttributesméthodes etc .. . et il a besoin de structure de base de données correspond à près qui suit les mêmes motifs ou similaires à table de magento native: catalog_product_entity_media_gallery_value, catalog_product_entity_media_gallery, catalog_product_entity_media_gallery_valueetc ... ne ont pas travaillé sur la vidéo encore!

J'espère que cela aide quelqu'un!

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.