This my code for the controller.
<?php
declare(strict_types=1);
namespace VendorModuleControllerIndex;
use MagentoFrameworkAppActionHttpPostActionInterface;
use MagentoFrameworkAppResponseHttp;
use MagentoFrameworkAppRequestHttp as HttpRequest;
use MagentoFrameworkControllerResultInterface;
use MagentoFrameworkExceptionLocalizedException;
use MagentoFrameworkControllerResultJsonFactory;
use MagentoFrameworkViewResultPageFactory;
use MagentoFrameworkHTTPPhpEnvironmentRemoteAddress;
use VendorModuleModelMyModelFactory;
use MagentoFrameworkMessageManagerInterface;
use MagentoFrameworkStdlibDateTimeTimezoneInterface;
use PsrLogLoggerInterface;
/**
* This class allows to save the request in database
* Class Index
*/
class Index implements HttpPostActionInterface
{
/**
* @var PageFactory
*/
protected $resultPageFactory;
/**
* @var Json
*/
protected $serializer;
/**
* @var LoggerInterface
*/
protected $logger;
/**
* @var Http
*/
protected $http;
/**
* @var HttpRequest
*/
protected $httpRequest;
/**
* @var RemoteAddress
*/
protected $remote;
/**
* @var MyModelFactory
*/
protected $myModel;
/**
* @var JsonFactory
*/
protected $resultJsonFactory;
/**
* @var ManagerInterface
*/
protected $messageManager;
/**
* @var TimezoneInterface
*/
protected $timezoneInterface;
/**
* Constructor
*
* @param PageFactory $resultPageFactory
* @param LoggerInterface $logger
* @param Http $http
* @param HttpRequest $httpRequest
* @param RemoteAddress $remote
* @param MyModelFactory $myModel
* @param JsonFactory $resultJsonFactory
* @param ManagerInterface $messageManager
* @param TimezoneInterface $timezoneInterface
*/
public function __construct(
PageFactory $resultPageFactory,
LoggerInterface $logger,
Http $http,
HttpRequest $httpRequest,
RemoteAddress $remote,
MyModelFactory $myModel,
JsonFactory $resultJsonFactory,
ManagerInterface $messageManager,
TimezoneInterface $timezoneInterface
) {
$this->resultPageFactory = $resultPageFactory;
$this->logger = $logger;
$this->http = $http;
$this->httpRequest= $httpRequest;
$this->remote = $remote;
$this->myModel = $myModel;
$this->resultJsonFactory = $resultJsonFactory;
$this->messageManager = $messageManager;
$this->timezoneInterface = $timezoneInterface;
}
/**
* Execute save action
*
* @return ResultInterface
*/
public function execute()
{
$resultJson = $this->resultJsonFactory->create();
$post= $this->httpRequest->getPostValue();
$dateTime = $this->timezoneInterface->date()->format('Y-m-
d H:i:s');
$ip = $this->remote->getRemoteAddress();
if (empty($post['mobile'])) {
throw new LocalizedException(__('Mobile number is
required'));
}
try {
$model = $this->myModel->create();
$data = ['mobile'=>$post["mobile"],
'sourc_url'=>$post["currentUrl"],
'ip_address' => $ip,
'created'=>$dateTime
];
$model->setData($datas)->save();
$message = $this->messageManager->addSuccess('form submitted succesfully.');
return $resultJson->setData(['success' => $message]);
} catch (LocalizedException $e) {
return $resultJson->setData($e->getMessage());
} catch (Exception $e) {
$this->logger->critical($e);
return $resultJson->setData($e->getMessage());
}
}
}