Saya baru-baru ini mengimplementasikan Komponen UUp FileUploader di formulir saya di Magento 2.1.7.
Kode untuk itu ada di sini ( app / code / Vendor / Blog / view / adminhtml / ui_component / vendor_blog_form.xml ):
<field name="featured_images">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="dataType" xsi:type="string">text</item>
<item name="label" translate="true" xsi:type="string">Hervorgehobene Bilder:</item>
<item name="formElement" xsi:type="string">fileUploader</item>
<item name="componentType" xsi:type="string">fileUploader</item>
<item name="previewTmpl" xsi:type="string">Magento_Catalog/image-preview</item>
<item name="elementTmpl" xsi:type="string">ui/form/element/uploader/uploader</item>
<item name="allowedExtensions" xsi:type="string">jpg jpeg gif png</item>
<item name="notice" xsi:type="string" translate="true">Erlaubte Dateitypen: png, gif, jpg, jpeg.</item>
<item name="maxFileSize" xsi:type="number">2097152</item>
<item name="source" xsi:type="string">blog</item>
<item name="sortOrder" xsi:type="number">10</item>
<item name="dataScope" xsi:type="string">featured_images</item>
<item name="validation" xsi:type="array">
<item name="required-entry" xsi:type="boolean">false</item>
</item>
<item name="uploaderConfig" xsi:type="array">
<item name="url" xsi:type="url" path="vendor_blog/blog/upload"/>
</item>
</item>
</argument>
</field>
Kontroler saya untuk ini adalah ini ( app / code / Vendor / Blog / Controller / Adminhtml / Blog / Upload.php ):
<?php
namespace Vendor\Blog\Controller\Adminhtml\Blog;
use Magento\Framework\App\Filesystem\DirectoryList;
use Magento\Backend\App\Action;
class Upload extends \Vendor\Blog\Controller\Adminhtml\Blog
{
protected $_fileUploaderFactory;
protected $_directory_list;
protected $_logger;
public function __construct(
Action\Context $context,
\Magento\Framework\Registry $coreRegistry,
\Magento\MediaStorage\Model\File\UploaderFactory $fileUploaderFactory,
\Magento\Framework\App\Filesystem\DirectoryList $directory_list,
\Psr\Log\LoggerInterface $logger
) {
$this->_fileUploaderFactory = $fileUploaderFactory;
$this->_directory_list = $directory_list;
$this->_logger = $logger;
parent::__construct($context, $coreRegistry);
}
public function execute(){
$uploader = $this->_fileUploaderFactory->create(['fileId' => 'featured_images']);
$uploader->setAllowedExtensions(['jpg', 'jpeg', 'gif', 'png']);
$uploader->setAllowRenameFiles(false);
$uploader->setFilesDispersion(false);
$path = $this->_filesystem->getDirectoryRead(DirectoryList::MEDIA)->getAbsolutePath('blog');
//$path = $this->_directory_list->getPath('media') . '/blog';
$this->_logger->debug('Uploader.php: '.$path);
$uploader->save($path);
}
}
Namun, ketika saya mengunggah gambar dan memeriksa panggilan di konsol Chrome, saya mendapatkan Galat 500 dengan Pengecualian: Array $ _FILES kosong .
Saya berjuang selama dua hari tetapi saya tidak bisa membuatnya bekerja dengan benar. Saat saya batalkan komentar pada $path
baris variabel alternatif , Upload berhasil tetapi saya tidak mendapatkan pratinjau.
Saya membaca bahwa mungkin itu adalah enctype
formulir yang menyebabkan masalah, tetapi saya tidak menemukan informasi tentang cara memeriksa ini untuk formulir Komponen UI.
Jika Anda membutuhkan keseluruhan kode pengecualian, beri tahu saya.
Saya menghargai setiap bantuan yang mungkin. Terima kasih!
sumber
Jawaban:
Saya mengikuti langkah-langkah ini untuk menambahkan komponen UI fileuploader di formulir admin
Saya menggunakan komponen fileuploader UI untuk mengunggah ikon untuk ekstensi FAQ saya. Anda dapat mengambil referensi dari sini: https://github.com/mageprince/magento2-FAQ
1) Tambahkan bidang dalam
admin_form.xml
(Formulir Admin)2) Sekarang kita perlu membuat controller yang kita definisikan dalam
uploaderConfig
bentuk admin:<item name="url" xsi:type="url" path="vendor_module/faqgroup/upload"/>
3) Buat
ImageUploader.php
4) Buat
image-preview.html
5) Sekarang tambahkan argumen
ImageUploader.php
di di.xmlPeriksa file ini untuk memuat gambar yang diunggah pada formulir edit: DataProvider.php
KELUARAN:
Untuk menyimpan gambar dalam basis data
Untuk menampilkan gambar yang diunggah di halaman edit formulir:
sumber
Suplemen untuk komponen Magento 2.2 UI
Bandingkan dengan Magento 2.1, di Magento 2.2 , komponen UI memiliki beberapa perbedaan opsional seperti di bawah ini. Kita dapat menggunakan pejabat
Magento_Catalog/image-preview
sebagai pratinjau templete, dan kode lainnya seperti controller dapat merujuk ke jawaban yang diterima .sumber
TypeError: value.map is not a function
. Bagaimana saya bisa memperbaikinya