#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.