यदि आप एक छवि अपलोड करना चाहते हैं तो आप छवि चयन बटन का उपयोग क्यों नहीं करते हैं?
यदि आप संपादक को पसंद करते हैं, तो इसका उपयोग करें। लेकिन यह एक संपादक का उपयोग करके एक छवि अपलोड करने का एक उचित तरीका नहीं है। आप इसके बजाय बटन का उपयोग कर सकते हैं। यदि आप नहीं जानते कि यह कैसे करना है। मुझे समझाने दो।
यहाँ मेरा कोड है। नीचे कोड ब्लॉक फ़ाइल में लिखा गया है जो एक बटन बनाता है।
$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 में कॉल करना चाहते हैं..तो bto कोड 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 () मेरे ब्लॉक में लिखा जाता है। उसके अनुसार, आपको अपनी ब्लॉक फाइल के रूप में आवेदन करना चाहिए।
मैं उम्मीद करता हूँ यह आप के लिए उपयोगी है। यदि आपके पास कोई प्रश्न है तो मुझे बताएं।