将表单数据保存到自定义表

时间:2018-12-10 17:19:42

标签: forms symfony save entity magento2

我有一个链接到控制器的表单,我的目标是将数据保存到我的自定义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上遇到了一些帖子,建议您不使用,因为它是一项不完整的功能。有什么替代方法/正确的方法?

0 个答案:

没有答案