magento 2 사용자 정의 모듈에서 이미지 및 비디오를 업로드하는 방법


15

magento 2.1을 사용하고 있습니다

UI 구성 요소를 사용하여 여러 이미지와 비디오를 업로드해야합니다

magento-admin 처럼 -> 제품-> caralog-> 제품

여기에 이미지 설명을 입력하십시오

이것을 달성하려면 어떻게해야합니까?


여전히 M2는 UI_Component없이 '이미지 및 비디오'에 이전 스타일 코드를 사용합니까? 이것이 필요합니까?
Sohel Rana

답변:


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) 템플릿 생성

gallery.phtml 양식을 복사 vendor/magento/module-product-video/view/adminhtml/templates/helper/gallery.phtml 하여 모듈의 요구 사항과 해충에 맞게 수정해야합니다.[vendor]/[module]/view/adminhtml/templates/helper/gallery.phtml

도움이 필요하면 의견을 남겨주세요


내가 작성해야 OBJECT의 DOM 문서로 오류를 얻고있다
b를 비제이을

@vijayb이 오류를 여기에 적어주십시오
Deexit Sanghani


@vijayb 나는 당신이 UI 양식 작업을 홉 여기에 귀하의 UI 양식 이름을 설정protected $formName = 'your_ui_form
Deexit Sanghani

나는 answer.do에 설명 된대로 모든 단계를 따랐습니다 .Ui 구성 요소를 정의하기 위해 다른 파일을 만들어야합니까 ??
vijay b

0

Magento 2에서 비디오를 추가하려면 다음 단계를 따라야합니다.

  1. Youtube API 키를 생성하십시오.
  2. Youtube API 키의 통합
  3. Magento 2. Youtube 비디오 URL을 제품에 통합.

0

Deexit Sanghani의 대답은 내가 magento2.2.2 v를 사용하고 있으며 XML의 위치가 나에게는 효과가 [vendor]/[module]/operation/view/adminhtml/layout/layout_edit.xml없지만 다른 모든 것은 제대로 투표되어 있습니다. 그리고를 heres는에보고 받아 나를 위해 일한 것입니다 ../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등의 방법 .. . : 다음은 필요한 밀접 기본 젠토 모양의 테이블과 유사한 같은 패턴이나 다음 데이터베이스 구조와 일치 catalog_product_entity_media_gallery_value, catalog_product_entity_media_gallery, catalog_product_entity_media_gallery_value등이 가지고 ... 비디오에 근무하지를 아직!

누군가를 돕기를 바랍니다!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.