Как сохранить данные в пользовательскую таблицу, используя пользовательскую модель в magento2

#php #xml #magento #magento2

#php #xml #magento #magento2

Вопрос:

У меня есть пользовательская таблица, и я также написал для нее пользовательскую модель, но я не могу понять, как я могу выполнить что-то вроде Mage::getModel('')->setData() . Я выполнил требуемую структуру, создал класс модели, указал модель ресурсов и определил класс коллекции, я могу получить данные в сетке администратора. Но, тем не менее, я не могу понять, как я могу использовать свою модель для setData() и getData() . Вот мой контроллер, к которому я делаю вызов AJAX, и я хочу сохранить свои данные в своей пользовательской таблице.

Rent.php

 <?php

namespace MofosysFastcureControllerIndex;

use MagentoFrameworkControllerResultFactory;
use MagentoFrameworkAppActionAction;
use MagentoFrameworkAppActionContext;
use VendorModuleModelModuleFactory;

class Rent extends Action {

    protected $request;
    protected $_moduleFactory;

    public function __construct(Context $context, moduleFactory $moduleFactory) {
        $this->_moduleFactory = $moduleFactory;
        parent::__construct($context);
    }

    public function execute() {
        $model = $this->_moduleFactory->create();
        $data = $this->getRequest()->getPost();
        $model->setName($data['name']);
        $resultJson = $this->resultFactory->create(ResultFactory::TYPE_JSON);
        $resultJson->setData($data['name']);
        return $resultJson;
    }
}
  

Мои модели имеют следующую структуру:

|-Model
|-ResourceModel
| |-Module
| | |-Collection.php
| |-Module.php
|-Module.php

Теперь я не могу понять, как я могу вставить эти данные в таблицу из моего контроллера, используя мою пользовательскую модель.

Module/Model/Module.php

 <?php
namespace VendorModuleModel;

use MagentoFrameworkExceptionLocalizedException as CoreException;

class Fastcure extends MagentoFrameworkModelAbstractModel {

    public function _construct() {
        $this->_init('VendorModuleModelResourceModelModule');
    }

    public function getName() {
        return $this->getData(self::name);
    }

    public function setName($name) {
        return $this->setData(self::name, $name);
    }
}
  

Все это, похоже, не работает, пожалуйста, помогите мне здесь, ребята.

Ответ №1:

 |-Controller 
    |-Index
        |-Rent.php
|-Model
   |-ResourceModel
   |    |-Module
   |    |    |-Collection.php
   |    |-Module.php
   |-Module.php
  

——— код контроллера Rent.php————————

 <?php 
namespace MofosysFastcureControllerIndex;
use MagentoFrameworkAppRequestDataPersistorInterface;
use MagentoFrameworkAppObjectManager;
class Rent extends MagentoFrameworkAppActionAction
{

    public function execute()
    { 

        $data = $this->getRequest()->getPost();

        $model->setName($data['name']);

        $model = $objectManager->create('MofosysFastcureModelModule');

        $model->setData('itemname', $data['name']);  

        $msg =""; 

        if($data != ''){ 
            $model->save(); 
            $msg = 'saved successfully';
        }else{ 
             $msg = 'not saved';  
        } 
        echo $msg;
    }

}  
  

———————код модели Module.php—————————

 <?php

namespace MofosysFastcureModel;

use MagentoFrameworkPhrase;

class Module extends MagentoFrameworkModelAbstractModel
{

    public function __construct(
        MagentoFrameworkModelContext $context,
        MagentoFrameworkRegistry $registry,
        MagentoFrameworkModelResourceModelAbstractResource $resource = null,
        MagentoFrameworkDataCollectionAbstractDb $resourceCollection = null,
        array $data = []
        )
        {
            parent::__construct($context, $registry, $resource, $resourceCollection, $data);
        }
        protected function _construct()
        { 
            $this->_init('MofosysFastcureModelResourceModelModule');
        } 
}
  

Комментарии:

1. Это руководство очень полезно, и я использовал его для добавления пользовательской таблицы в мою базу данных. Но теперь я понимаю, что мне нужна другая таблица. Должен ли я делать это снова и снова, но теперь как ModelResourceModel-2 ? Что я знаю, так это то, что мне понадобится новая коллекция, InstallData и InstallSchema.