Magento 2 कैसे कस्टम मॉड्यूल में छवियों और वीडियो अपलोड करने के लिए


15

मैं Magento 2.1 का उपयोग कर रहा हूं

मुझे ui घटक का उपयोग करके कई छवियों और वीडियो को अपलोड करने की आवश्यकता है

जैसे मैगेंटो-एडमिन -> उत्पाद -> कार्लाग -> उत्पाद

यहाँ छवि विवरण दर्ज करें

इसे प्राप्त करने के लिए मुझे क्या करने की आवश्यकता है?


फिर भी M2 ने UI_Component के बिना 'Image and Video' के लिए पुराने स्टाइल कोड का उपयोग किया है? क्या आपको इसकी जरूरत है?
सोहेल राणा

जवाबों:


7

अंत में मुझे जवाब मिल गया

मैं इस मॉड्यूल का उल्लेख करता हूं और अपने कस्टम मॉड्यूल में लागू करता हूं

नीचे उपयोगी कोड खोजें:

चरणों के नीचे

1) 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) हेल्पर ब्लॉक बनाएं

[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) हेल्पर फॉर्म ब्लॉक बनाएं

[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 '[]';
    }

}

नोट : - आपको दोनों ब्लॉकों के ऊपर ठीक से विस्तार करना चाहिए

4) टेम्पलेट बनाएं

आपको गैलरी.phtml फॉर्म को कॉपी करना चाहिए vendor/magento/module-product-video/view/adminhtml/templates/helper/gallery.phtml और इसे अपने मॉड्यूल में अपने आवश्यकता और कीट के रूप में संशोधित करना चाहिए[vendor]/[module]/view/adminhtml/templates/helper/gallery.phtml

अगर आपको कोई मदद चाहिए तो कृपया मुझे कमेंट में बताएं


मुझे त्रुटि हो रही है क्योंकि OBJECT DOM दस्तावेज़ बनाया जाना चाहिए
vijay b

@vijayb क्या आप इस त्रुटि को यहाँ रख सकते हैं
डेक्सिट संघानी


@vijayb मुझे आशा है कि आप ui फॉर्म पर काम कर रहे हैं, इसलिए यहाँ अपना ui फॉर्म नाम सेट करेंprotected $formName = 'your_ui_form
Deexit Sanghani

मैंने हर कदम का ठीक उसी तरह से पालन किया जैसा उत्तर में समझाया गया है। हमें उस यूआई घटक को परिभाषित करने के लिए कोई अन्य फाइल बनानी होगी ??
vijay b

0

Magento 2 में वीडियो जोड़ने के लिए, आपको इन चरणों का पालन करना होगा:

  1. एक Youtube एपीआई कुंजी उत्पन्न करें।
  2. करने के लिए यूट्यूब एपीआई कुंजी का एकीकरण
  3. Magento 2. उत्पाद के लिए यूट्यूब वीडियो URL का एकीकरण।

0

Deexit Sanghani का उत्तर दिनांकित हो सकता है क्योंकि मैं magento2.2.2 v का उपयोग कर रहा हूँ और xml के लिए स्थान मेरे लिए काम नहीं करेगा, [vendor]/[module]/operation/view/adminhtml/layout/layout_edit.xmlलेकिन बाकी सब कुछ ठीक- ठाक है और साथ ही साथ मतदान भी। और हेयर्स जो मेरे लिए काम करता है वह एक नज़र में ../vendor/magento/module-product-video/view/adminhtml/ui_component/product_form.xmlऔर आप में मॉड्यूल स्थान: ऐड के ../app/code/[vendor]/[module]/view/adminhtml/ui_component/your_ layout_edit.xmlभीतर <form></form>:

    <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> 

मैं छवि ऐड कस्टम भूमिकाएं आदि अपलोड करने के लिए प्रबंधन है .. लेकिन नहीं एक पंक्ति, के खिलाफ अभी तक डेटाबेस में बचाने नोट: यह आपकी आवश्यकताओं के लिए काम करता है बनाने के लिए ध्यान का एक बहुत जरूरत है, अपनी आवश्यकताओं के अधिलेखित जैसे gallery.pthml, getImagesJson(), getImageTypes(), getMediaAttributesतरीकों आदि .. ।: और फिर इसे जरूरत बारीकी डेटाबेस संरचना है कि एक ही पैटर्न या देशी Magento नज़र तालिका के समान इस प्रकार से मेल खाता है catalog_product_entity_media_gallery_value, catalog_product_entity_media_gallery, catalog_product_entity_media_gallery_valueआदि ... Have वीडियो पर काम नहीं अभी तक!

आशा है कि किसी की मदद करो!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.