Сохранение данных формы в настраиваемую таблицу

У меня есть форма, которая связана с контроллером, и моя цель - сохранить данные в моем пользовательском 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, и мне посоветовали не использовать из-за того, что это неполная функция. Каковы альтернативы / правильный способ сделать это?

Вероятно, вы могли бы использовать необработанный SQL или DQL-запрос для добавления данных без использования ORM.

A.L 20.12.2018 14:36

@ A.L да, это, вероятно, лучший способ сделать это, в настоящее время используется _objectManager, и он, кажется, имитирует некоторое поведение ORM, но ... во многих сообщениях говорится, что это плохая практика и т. д. Я так запутался с сообществом M2 xD

treyBake 20.12.2018 15:11

@treyBake с использованием ORM считается плохой практикой при высокой производительности / высокой нагрузке / трудно кэшируемых действиях, потому что это дает вам больше уровней абстракции, которые отлично подходят для производительности, но плохо для аспекта производительности. Мои вопросы: а) вы хотите вообще использовать Doctrine (ORM)? Если да, возможно, посмотрите DBAL. Б) Ваша проблема больше связана с производительностью или передовыми методами повышения производительности?

grexlort 24.12.2018 16:18
JS - События опций формы
JS - События опций формы
В продолжение предыдущей статьи CSS - стили, связанные с вводом формы , в этой статье мы будем использовать JS для взаимодействия с формами, на этот...
CSS - Стили, связанные с вводом формы
CSS - Стили, связанные с вводом формы
Общими стилями ввода для форм являются Input (включая Text, Radio, checkbox), Select и Textarea, из которых Input относительно прост, поэтому в этой...
Создание многостраничной формы заявления о приеме на работу с помощью Angular
Создание многостраничной формы заявления о приеме на работу с помощью Angular
Наличие на корпоративном сайте форм заявлений о приеме на работу, или "трудовых анкет", экономит время и деньги как для соискателей, так и для...
3
3
847
0

Другие вопросы по теме