magento 2 cara mengunggah gambar dan video dalam modul khusus


15

Saya menggunakan Magento 2.1

Saya perlu mengunggah banyak gambar dan video menggunakan komponen ui

Suka magento-admin -> produk -> caralog -> produk

masukkan deskripsi gambar di sini

apa yang harus saya lakukan untuk mencapai ini?


Masih M2 menggunakan kode gaya lama untuk 'Gambar dan Video' tanpa UI_Component? Apakah kamu membutuhkan ini?
Sohel Rana

Jawaban:


7

Akhirnya saya mendapat jawabannya

Saya merujuk modul ini dan menerapkannya dalam modul khusus saya

Temukan kode bermanfaat di bawah ini:

ikuti langkah-langkah di bawah ini

1) buat 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) Buat blok pembantu

[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) Buat blok formulir bantuan

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

}

Catatan : - Anda harus memanjang dengan benar di atas kedua blok

4) Buat template

Anda harus menyalin formulir gallery.phtml vendor/magento/module-product-video/view/adminhtml/templates/helper/gallery.phtml dan memodifikasinya sesuai kebutuhan Anda dan hama dalam modul Anda[vendor]/[module]/view/adminhtml/templates/helper/gallery.phtml

Tolong beri tahu saya dalam komentar jika Anda membutuhkan bantuan


saya mendapatkan kesalahan karena dokumen OBJECT DOM harus dibuat
vijay b

@vijayb dapatkah Anda letakkan kesalahan ini di sini
Deexit Sanghani


@ Vijayb Saya harap Anda bisa mengerjakan formulir ui, jadi setel di sini nama formulir ui Andaprotected $formName = 'your_ui_form
Deexit Sanghani

saya mengikuti setiap langkah persis seperti yang dijelaskan dalam answer.do kita harus membuat file lain untuk mendefinisikan Komponen Ui itu ??
vijay b

0

Untuk menambahkan video di Magento 2, Anda harus mengikuti langkah-langkah ini:

  1. Hasilkan Kunci API Youtube.
  2. Integrasi kunci Youtube API untuk
  3. Magento 2. Integrasi URL Video Youtube ke Produk.

0

Jawaban dari Deexit Sanghani mungkin keluar karena saya menggunakan magento2.2.2 v dan lokasi untuk xml din tidak berfungsi untuk saya, [vendor]/[module]/operation/view/adminhtml/layout/layout_edit.xmltetapi semua yang lain tentang benar jadi terpilih juga. Dan inilah yang bekerja untuk saya lihat di ../vendor/magento/module-product-video/view/adminhtml/ui_component/product_form.xmldan di lokasi modul Anda: ../app/code/[vendor]/[module]/view/adminhtml/ui_component/your_ layout_edit.xmldalam <form></form>add:

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

Saya harus berhasil meng-upload peran gambar add kustom dll .. tapi tidak menyimpan dalam database belum melawan baris, CATATAN: Ini membutuhkan banyak perhatian untuk membuatnya bekerja untuk kebutuhan anda, menimpa dengan kebutuhan Anda misalnya gallery.pthml, getImagesJson(), getImageTypes(), getMediaAttributesmetode dll .. . dan kemudian perlu sangat cocok struktur database yang mengikuti pola yang sama atau mirip dengan Magento asli tampilan table: catalog_product_entity_media_gallery_value, catalog_product_entity_media_gallery, catalog_product_entity_media_gallery_valuedll ... Memiliki tidak bekerja pada video belum!

Semoga itu bisa membantu seseorang!

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.