我有一个链接到控制器的表单,我的目标是将数据保存到我的自定义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');
}
我经历了the docs并发现了这一点,但是它没有关于如何实现的清晰示例。我在Magento SE上遇到了一些帖子,建议您不使用,因为它是一项不完整的功能。有什么替代方法/正确的方法?