У меня есть форма, которая связывается с контроллером, и моя цель - сохранить данные в моем пользовательском vendor_module_table
Я натолкнулся на несколько сообщений в Интернете о том, как это сделать.Моя проблема с предоставленными решениями заключается в том, что все они используют диспетчер объектов - и для меня это кажется плохой практикой.Особенно, когда M2 основан на Symfony, где я могу просто вызвать предварительно встроенную функцию сохранения / добавления для моего контроллера, связанную с моей формой, и она просто работает .. Magento2 адаптировал что-то для этого?
public function execute()
{
$post = (array) $this->getRequest()->getPost();
if (!empty($post)) {
$customerId = $post['customer_id'];
$make = $post['make_id'];
$model = $post['model_id'];
$year = $post['year_id'];
# to do - add insert
$this->messageManager->addSuccessMessage('Success!');
$resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT);
$resultRedirect->setUrl('/module/controller/add');
return $resultRedirect;
}
$this->_view->loadLayout();
$this->_view->renderLayout();
}
Напримеркод из моего проекта Symfony:
if ($form->isSubmitted() && $form->isValid()) {
$em = $this->getDoctrine()->getManager();
# set non-form fields
$category->setApproved(0);
$category->setCreatedTs(new \DateTime());
try {
# this is how Symfony saves data to a table
$em->persist($category);
$em->flush();
$this->addFlash('success', 'Category Submitted for Review.');
} catch (Exception $e) {
$this->addFlash('danger', 'Something went skew-if. Please try again.'. $e->getMessage(). '- ' .$e->getCode());
}
return $this->redirectToRoute('category_list');
}
Я просмотрел документы и нашел это, но у него нет четкого примера того, как его реализовать.Я наткнулся на несколько постов в Magento SE, и мне посоветовали не использовать из-за того, что это неполная функция.Каковы альтернативы / правильный способ сделать это?