Forms 将表单数据保存到自定义表
我有一个链接到控制器的表单,我的目标是将数据保存到我的自定义Forms 将表单数据保存到自定义表,forms,symfony,save,entity,magento2,Forms,Symfony,Save,Entity,Magento2,我有一个链接到控制器的表单,我的目标是将数据保存到我的自定义vendor\u module\u表中 我在网上看到了一些关于如何做的帖子。我对提供的解决方案的问题是,它们都使用对象管理器——我觉得这是一种糟糕的做法。特别是当M2基于Symfony时,我可以调用一个预构建的保存/添加函数到我的控制器中,该函数与我的表单相关,并且它可以正常工作。。Magento2为这个做了些什么吗 public function execute() { $post = (array) $this->ge
vendor\u module\u表中
我在网上看到了一些关于如何做的帖子。我对提供的解决方案的问题是,它们都使用对象管理器——我觉得这是一种糟糕的做法。特别是当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();
}
例如,my 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上看到了一些帖子,有人建议不要使用它,因为它是一个不完整的功能。有什么替代方法/正确的方法可以做到这一点?您可能可以使用原始SQL或DQL查询来添加数据,而无需使用ORM。@a.L是的,这可能是一种更好的方法,目前使用的是_objectManager,它似乎模仿了ORM的一些行为,但。。。很多帖子都说这是不好的做法等等。我对M2社区感到很困惑xD@treyBake在高性能/高负载/难以缓存的操作中,使用ORM被认为是一种不好的做法,因为它会给您提供更多的抽象层,这些抽象层对生产力很有好处,但对性能方面却很不利。我的问题是a)你想使用条令(ORM)吗?如果是,可以看看DBAL b)您的问题更多地是关于性能或生产力方面的良好实践?