Я использую magento 2.1
Мне нужно загрузить несколько изображений и видео с помощью компонента пользовательского интерфейса
Лайк magento-admin -> Продукты -> Caralog -> Продукт
Что мне нужно сделать, чтобы достичь этого?
Я использую magento 2.1
Мне нужно загрузить несколько изображений и видео с помощью компонента пользовательского интерфейса
Лайк magento-admin -> Продукты -> Caralog -> Продукт
Что мне нужно сделать, чтобы достичь этого?
Ответы:
Наконец я получил ответ
Я отсылаю этот модуль и внедряю в мой пользовательский модуль
Найдите ниже полезный код:
следующие ниже шаги
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
Пожалуйста, дайте мне знать в комментариях, если вам нужна помощь
protected $formName = 'your_ui_form
Чтобы добавить видео в Magento 2, вы должны выполнить следующие действия:
Ответ от 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
т.д ... не работал на видео все же!
Надеюсь, что помочь кому-то!