Magento 2创建模型

在Magento 2中创建模型是MVC架构的一条巨大路径。在 Magento 2 CRUD中,模型具有许多不同的功能,例如管理数据,安装或升级模块。在本教程中,我只讨论数据管理CRUD。我们必须创建Model,Resource Model,Resource Model Conllection来管理表中的数据:mageplaza_topic如上所述。

在创建模型之前,我们需要为它创建接口。让我们创建TopicInterface

app/code/Mageplaza/HelloWorld/Model/Api/Data/TopicInterface.php

并把这个内容:

<?php
namespace Mageplaza\HelloWorld\Model\Api\Data;
interface TopicInterface
{
	public function getId();
	public function setId();
	
	public function getTitle();
	public function setTitle();
	
	public function getContent();
	public function setContent();
	
	public function getCreationTime();
	public function setCreationTime();
}

该接口已经定义了表格数据的set和get方法,我们将在与模型交互时使用它们。在将CRUD模型导出到基于Magento服务合同的API时,此界面起着重要作用。

现在我们将创建模型文件:

app/code/Mageplaza/HelloWorld/Model/Topic.php

这是该文件的内容:

<?php 
namespace Mageplaza\HelloWorld\Model;
class Topic extends \Magento\Framework\Model\AbstractModel implements \Magento\Framework\DataObject\IdentityInterface,
\Mageplaza\HelloWorld\Model\Api\Data\TopicInterface
{
	const CACHE_TAG = 'mageplaza_topic';

	protected function _construct()
	{
		$this->_init('Mageplaza\HelloWorld\Model\ResourceModel\Topic');
	}

	public function getIdentities()
	{
		return [self::CACHE_TAG . '_' . $this->getId()];
	}
}

这个模型类将扩展AbstractModelMagento\Framework\Model\AbstractModel并实现TopicInterfaceIdentityInterface\Magento\Framework\DataObject\IdentityInterface。IdentityInterface将强制Model类定义getIdentities()将返回模型的唯一ID 的方法。如果模型在数据库操作后需要缓存刷新并将信息呈现到前端页面,则必须仅使用此接口。

_construct()只要模型被实例化,就会调用该方法。每个CRUD模型都必须使用_construct()方法来调用_init()方法。这个_init()方法将定义实际从数据库中获取信息的资源模型。如上所述,我们定义资源模型Mageplaza \ Topic \ Model \ ResourceModel \ Topic关于模型的最后一件事是你应该在模型中使用的一些变量:

  • $_eventPrefix - 要触发的事件的前缀
  • $_eventObject - 事件访问时的对象名称
  • $_cacheTag - 在缓存中使用的唯一标识符

相关文章

0 0 投票数
文章评分
订阅评论
提醒
0 评论
最旧
最新 最多投票
内联反馈
查看所有评论