หากคุณต้องการอัพโหลดภาพทำไมคุณไม่ใช้ปุ่มเลือกภาพ?
หากคุณชอบโปรแกรมแก้ไขให้ใช้ แต่ไม่ได้เป็นวิธีที่เหมาะสมในการอัปโหลดภาพโดยใช้โปรแกรมแก้ไขคุณสามารถใช้ปุ่มแทน หากคุณไม่ทราบวิธีการทำ ให้ฉันอธิบาย
นี่คือรหัสของฉัน รหัสด้านล่างเขียนในไฟล์บล็อกซึ่งสร้างปุ่ม
$fieldset->addField(
'image',
'file',
[
'name' => 'image',
'label' => __('Image'),
'title' => __('Image'),
]
);
อิมเมจเป็นชื่อฟิลด์ฐานข้อมูล ในกรณีของคุณมันเป็นบรรณาธิการ wysiwyg ฉันไม่ทราบแน่นอน แต่เมื่อตรวจสอบในฐานข้อมูลของคุณ
รหัสด้านล่างใช้สำหรับบันทึกภาพในตารางของคุณ ตอนนี้ใส่รหัสนี้ลงในคอนโทรลเลอร์ของคุณ
<?php
namespace Vendor\Module\Controller\Adminhtml\Slider;
use Magento\Framework\App\Filesystem\DirectoryList;
class Save extends \Magento\Backend\App\Action
{
protected $_mediaDirectory;
protected $_fileUploaderFactory;
public function __construct(
\Magento\Backend\App\Action\Context $context,
\Magento\Framework\Filesystem $filesystem,
\Magento\MediaStorage\Model\File\UploaderFactory $fileUploaderFactory
)
{
$this->_mediaDirectory = $filesystem->getDirectoryWrite(\Magento\Framework\App\Filesystem\DirectoryList::MEDIA);
$this->_fileUploaderFactory = $fileUploaderFactory;
parent::__construct($context);
}
public function execute()
{
/*For Image Upload*/
/** @var \Magento\Framework\Controller\Result\Redirect $resultRedirect */
$resultRedirect = $this->resultRedirectFactory->create();
try{
$target = $this->_mediaDirectory->getAbsolutePath('imagefolder/');
$targetOne = "imagefolder/";
/** @var $uploader \Magento\MediaStorage\Model\File\Uploader */
$uploader = $this->_fileUploaderFactory->create(['fileId' => 'image']);
/** Allowed extension types */
$uploader->setAllowedExtensions(['jpg', 'jpeg', 'gif', 'png', 'zip', 'doc']);
/** rename file name if already exists */
$uploader->setAllowRenameFiles(true);
/** upload file in folder "mycustomfolder" */
$result = $uploader->save($target);
/*If file found then display message*/
if ($result['file'])
{
$this->messageManager->addSuccess(__('File has been successfully uploaded'));
}
}
catch (Exception $e)
{
$this->messageManager->addError($e->getMessage());
}
/*For Image Upload Finished*/
$data = $this->getRequest()->getPostValue();
$data['image'] = $targetOne.$result['file'];
if (!$data) {
$this->_redirect('*/*/filenaem');
return;
}
try {
$rowData = $this->_objectManager->create('Vendor\Module\Model\Slider');
$rowData->setData($data);
if (isset($data['id']))
{
$rowData->setEntityId($data['id']);
}
$rowData->save();
$this->messageManager->addSuccess(__('Row data has been successfully saved.'));
}
catch (Exception $e)
{
$this->messageManager->addError(__($e->getMessage()));
}
$this->_redirect('*/*/index');
return $this->resultRedirectFactory->create()->setPath(
'*/*/upload', ['_secure'=>$this->getRequest()->isSecure()]
);
}
/**
* Check Category Map permission.
*
* @return bool
*/
protected function _isAllowed()
{
return $this->_authorization->isAllowed('Vendor_Module::Module_list');
}
}
หลังจากนั้นคุณต้องการเรียกมันใน phtml สำหรับผล .. ดังนั้นรหัสตะโกนเขียนในไฟล์ phtml
นี่คือรหัส
$collection = $block->getCollectionFor();
$_objectManager = \Magento\Framework\App\ObjectManager::getInstance(); //instance of\Magento\Framework\App\ObjectManager
$storeManager = $_objectManager->get('Magento\Store\Model\StoreManagerInterface');
$currentStore = $storeManager->getStore();
//Base URL for saving image into database.
$mediaUrl = $currentStore->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA);
getCollectionFor () เขียนใน block.so ของฉันตามนั้นคุณควรใช้เป็นไฟล์บล็อกของคุณ
ฉันหวังว่านี่จะเป็นประโยชน์กับคุณ หากคุณมีข้อสงสัยใด ๆ แจ้งให้เราทราบ