Hey guys,
have a controller receiving a post.
How do I save the data and retreive on frontend?
Hi @AlexMesquita,
You should use a repository. Maybe this simple example can help a little bit.
Look at vendor/magento/module-customer/Controller/Adminhtml/Group/Save.php.
Into method execute you'll find this:
/**
* Create or save customer group.
*
* @return \Magento\Backend\Model\View\Result\Redirect|\Magento\Backend\Model\View\Result\Forward
*/
public function execute()
{
$taxClass = (int)$this->getRequest()->getParam('tax_class');
/** @var \Magento\Customer\Api\Data\GroupInterface $customerGroup */
$customerGroup = null;
if ($taxClass) {
$id = $this->getRequest()->getParam('id');
$resultRedirect = $this->resultRedirectFactory->create();
try {
$customerGroupCode = (string)$this->getRequest()->getParam('code');
if ($id !== null) {
$customerGroup = $this->groupRepository->getById((int)$id);
$customerGroupCode = $customerGroupCode ?: $customerGroup->getCode();
} else {
$customerGroup = $this->groupDataFactory->create();
}
$customerGroup->setCode(!empty($customerGroupCode) ? $customerGroupCode : null);
$customerGroup->setTaxClassId($taxClass);
$this->groupRepository->save($customerGroup);
$this->messageManager->addSuccess(__('You saved the customer group.'));
$resultRedirect->setPath('customer/group');
} catch (\Exception $e) {
$this->messageManager->addError($e->getMessage());
if ($customerGroup != null) {
$this->storeCustomerGroupDataToSession(
$this->dataObjectProcessor->buildOutputDataArray(
$customerGroup,
\Magento\Customer\Api\Data\GroupInterface::class
)
);
}
$resultRedirect->setPath('customer/group/edit', ['id' => $id]);
}
return $resultRedirect;
} else {
return $this->resultForwardFactory->create()->forward('new');
}
}
At
$this->groupRepository->save($customerGroup);
The data is saved.
You should explore hoy to build a repository (service contracts + models).
https://devdocs.magento.com/guides/v2.2/extension-dev-guide/service-contracts/service-contracts.html