আপনি যদি কোনও ছবি আপলোড করতে চান তবে আপনি কেন চিত্র নির্বাচন বোতামটি ব্যবহার করবেন না?
আপনি যদি সম্পাদক পছন্দ করেন তবে এটি ব্যবহার করুন। তবে সম্পাদক ব্যবহার করে কোনও চিত্র আপলোড করা সঠিক উপায় নয়। পরিবর্তে আপনি বোতামটি ব্যবহার করতে পারেন। কীভাবে করতে হয় তা না জানলে। আমাকে ব্যাখ্যা করতে দাও.
এখানে আমার কোড। নীচের কোডটি ব্লক ফাইলে লিখিত যা একটি বোতাম তৈরি করে।
$fieldset->addField(
'image',
'file',
[
'name' => 'image',
'label' => __('Image'),
'title' => __('Image'),
]
);
চিত্র হল ডাটাবেস ক্ষেত্রের নাম। আপনার ক্ষেত্রে এটি উইসইউইগ এডিটর I আমি সঠিকটি জানি না তবে একবার আপনার ডাটাবেসে পরীক্ষা করে দেখুন।
নীচের কোডটি আপনার টেবিলের মধ্যে চিত্রটি সংরক্ষণ করতে ব্যবহৃত হয়। এখন এই কোডটি আপনার নিয়ামকের মধ্যে রাখুন।
<?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');
}
}
এর পরে আপনি ফলাফলের জন্য এটি পিটিএইচটিএমএল করতে চান..এইচটিএমএল ফাইলটিতে বেলো কোড লিখুন।
এখানে কোড।
$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 () আমার ব্লকে লেখা আছে so সুতরাং সেই অনুযায়ী, আপনার ব্লক ফাইল হিসাবে আবেদন করা উচিত।
আমি আশা করি এটি আপনার পক্ষে সহায়ক। আপনার যদি কোন জিজ্ঞাসা থাকে তবে আমাকে জানান।