I'm new to Magento, created a simple CRUD module, which have a name, description and logo columns, Name and description are saving to the DB without any problems, but I need help on how to upload an image. Here is my whole module file structure, and code of Save controller, Thanks everyone for helping me!
<?php
namespace Elogic\Vendors\Controller\Adminhtml\Vendors;
use Magento\Backend\App\Action;
class Save extends Action
{
/**
* @var \Elogic\Vendors\Model\Vendors
*/
protected $_model;
/**
* @param Action\Context $context
* @param \Elogic\Vendors\Model\Vendors $model
*/
public function __construct(
Action\Context $context,
\Elogic\Vendors\Model\Vendors $model
) {
parent::__construct($context);
$this->_model = $model;
}
/**
* {@inheritdoc}
*/
protected function _isAllowed()
{
return $this->_authorization->isAllowed('Elogic_Vendors::vendors_save');
}
/**
* Save action
*
* @return \Magento\Framework\Controller\ResultInterface
*/
public function execute()
{
$data = $this->getRequest()->getPostValue();
/** @var \Magento\Backend\Model\View\Result\Redirect $resultRedirect */
$resultRedirect = $this->resultRedirectFactory->create();
if ($data) {
/** @var \Elogic\Vendors\Model\Vendors $model */
$model = $this->_model;
$id = $this->getRequest()->getParam('id');
if ($id) {
$model->load($id);
}
$model->setData($data);
$this->_eventManager->dispatch(
'vendors_vendors_prepare_save',
['vendors' => $model, 'request' => $this->getRequest()]
);
try {
$model->save();
$this->messageManager->addSuccess(__('Vendor saved'));
$this->_getSession()->setFormData(false);
if ($this->getRequest()->getParam('back')) {
return $resultRedirect->setPath('*/*/edit', ['id' => $model->getId(), '_current' => true]);
}
return $resultRedirect->setPath('*/*/');
} catch (\Magento\Framework\Exception\LocalizedException $e) {
$this->messageManager->addError($e->getMessage());
} catch (\RuntimeException $e) {
$this->messageManager->addError($e->getMessage());
} catch (\Exception $e) {
$this->messageManager->addException($e, __('Something went wrong while saving vendor'));
}
$this->_getSession()->setFormData($data);
return $resultRedirect->setPath('*/*/edit', ['entity_id' => $this->getRequest()->getParam('id')]);
}
return $resultRedirect->setPath('*/*/');
}
}