Questions tagged «crud»

1
Magento 2.1:使用实体管理器
从2.1 Magento引入Magento/Framework/Model/EntityManager 我在这里可能是错的,但是据我所知,它是替换Magento/Framework/Model/AbstractModel通过继承实现功能并通过组合来解决此问题(仅供参考:https : //en.m.wikipedia.org/wiki/Composition_over_inheritance) 您可以在核心文件中找到一个示例:https : //github.com/magento/magento2/blob/59671558ecdab652b40db2d1a7c63d5b1dea0a92/app/code/Magento/Cms/Model/ResourceModel/Block.php 基本上,所有CRUD操作都在类中显式声明,然后推迟到EntityManager该类。在2.1之前,父方法是通过继承调用的。 所以我的问题是: EntityManager2.1版之前的继承系统有什么好处? 被简单地声明CRUD方法(如上面的例子)足以启动定制CRUD模块中实现它还是有更多?

2
在Magento 2中加载自定义模型的最佳方法
由于我很难找到正确的方法,因此您可以在下面找到我制定的最佳实践。享受,如果需要,请更正我的英语,如果我是我,我就说我错了。:) 编辑: ...,我发现我在某些方面是错误的。因此,在Raphael的答案帮助我了解了更多信息之后,我更新了原始帖子。多亏他! 以下使用的概念: 如果您熟悉以下概念,将更容易理解以下代码和说明: 注入依赖性(因为$this->variable代码中的每个变量都被注入) 服务合同和资料库 厂 内容: 只是为了获得更多的上下文,假设我们有一个可以正确构造的模块: 包含方法的块类CustomBlock getCustomModel($id), 此方法根据在参数中传递的ID返回CustomModel对象, CustomModel类型对应于 \Vendor\Module\Model\CustomModel 此模型带有其资源模型(在中\Vendor\Module\Model\ResourceModel\CustomModel) 及其存储库(在中\Vendor\Module\Model\CustomModelRepository)。 问题: 让所有内容加载CustomModel对象的最佳实践是什么? 由于不建议使用load()此方法,因此不能使用CustomModel对象中的。 优良作法是您必须使用CustomModel服务合同。服务合同是数据接口(例如CustomModelInterface)和服务接口(例如CustomModelRepositoryInterface)。所以我的方块看起来像这样: / ** @var SlideRepositoryInterface * / 受保护的$ slideRepository; / ** * CustomBlock构造函数 * ... * @param CustomModelRepositoryInterface $ customModelRepository * ... * / 公共功能__construct( ... CustomModelRepositoryInterface $ customModelRepository ... …

3
Magento 2:使用服务合同的好处是什么?
因此,如您所知,Magento 2建议的处理CRUD行为的模型/集合的方法是使用服务合同。 但是仍然根据Magento SE问答,似乎大多数人倾向于直接使用模型/资源模型/集合来代替。 作为加载报价的示例,我可以这样直接通过工厂进行报价: $this->quoteFactory->create()->load($quoteId); $this->quoteFactory的实例在哪里\Magento\Quote\Model\QuoteFactory 但是我也可以通过服务合同来做到这一点: $this->quoteRepository->get($quoteId); $this->quoteRepository的实例在哪里\Magento\Quote\Api\CartRepositoryInterface 所以我的问题是,与工厂相比,使用服务合同有什么好处?

1
避免在大规模动作中循环保存
我创建了自己的CRUD模块,其中包含类似于CMS页面的内联编辑操作, 一切正常,但是以EcgM2标准运行phpsniffer时,出现以下警告: 在循环中检测到模型LSD方法save() 如何避免这种情况? 注意:如果我“嗅探”上面链接的核心文件,则会出现相同的警告。如果有人需要, 这是我的execute方法。但这与CMS页面控制器中的非常相似 public function execute() { /** @var \Magento\Framework\Controller\Result\Json $resultJson */ $resultJson = $this->jsonFactory->create(); $error = false; $messages = []; $postItems = $this->getRequest()->getParam('items', []); if (!($this->getRequest()->getParam('isAjax') && count($postItems))) { return $resultJson->setData([ 'messages' => [__('Please correct the data sent.')], 'error' => true, ]); } foreach (array_keys($postItems) as …

2
将图像表单元素添加到添加/编辑表单
我正在使用用于管理列表和表单的ui组件为Magento 2构建CRUD模块,我的一个实体具有一个图像字段。 但是我无法使其正常工作。 这是它应该如何工作的。 在添加模式或编辑模式下,没有上传的图像时,它看起来应该像一个简单的文件输入。 上传文件后,它应显示图像预览,并在其下方显示一个删除框。 我不是在寻找这种设计。它的外观可能不同,但功能相同。 在Magento 1中,仅通过创建自己的块渲染器就可以做到这一点 class {{Namespace}}_{{Module}}_Block_Adminhtml_{{Entity}}_Helper_Image extends Varien_Data_Form_Element_Image { protected function _getUrl() { $url = false; if ($this->getValue()) { $url = Mage::helper('{{namespace}}_{{module}}/{{entity}}_image')->getImageBaseUrl().$this->getValue(); } return $url; } } 并将其添加到我的表单块中 $fieldset->addType( 'image', Mage::getConfig()->getBlockClassName('{{namespace}}_{{module}}/adminhtml_{{entity}}_helper_image') ); 但是我在Magento 2中没有表单块。 我知道我可以在ui组件文件中为表单字段使用类名。 <field name="image" class="Class\Name\Here"> <argument name="data" xsi:type="array"> <item name="config" xsi:type="array"> <item …

2
什么以及为什么是加载模型的正确方法
我在Magento方面有很多经验,但是我意识到我不知道哪种加载模型的方法是正确的,为什么。我已经阅读了关于该主题的所有内容,但是人们对此类内容的解释实际上并没有深入到足以解释的原因,为什么要使用此特定方法而不是其他方法。假设没有要加载的模型的存储库。 直到现在,我一直在构造器中使用模型,然后简单地加载它。 public function __construct( \Vendor\Module\Model\Something $somethingModel ) { $this->somethingModel = $somethingModel; } public function getTestById($id) { return $this->somethingModel->load($id); } 而且它总是按预期工作,我也很确定它至少已在内核中使用。 但是后来我看到一位同事在使用 modelFactory->create()->load($id) 据我了解,工厂正被用来创建一个新的实体,例如,如果我想创建一个新产品,那么我可以创建工厂,用数据填充它,然后保存它。但是话又说回来,我开始研究这个话题,并从Fabian Schmengler(我们何时应该在Magento 2中使用存储库和工厂?)中看到了一个示例,他以这种方式加载模型,并且不鼓励其他人简单地加载模型,他没有这样做。除了解释为什么它不是“服务合同的一部分”之外,还要说明原因。据我了解,存储库是服务合同的一部分,因此在加载通过存储库不可用的模型时,在这里看不到任何联系。 为了增加一些混乱,我还找到了一种通过从创建的modelFactory中获取resourceModel来加载模型的方法,该方法由Vinai Kopp提出(如何在Magento 2中实现自定义模块的服务合同?),现在就像我一直读到的那样,我不应该直接使用资源模型而完全迷失了方向。 是的,有人可以告诉我哪种方法正确,为什么我应该用它代替所有其他方法?

2
Magento 2和服务合同
我知道关于这个问题有很多话题,但是我不确定是否清楚。 我们什么时候需要使用服务合同? 他们会取代Model/ 做的CRUD ResourceModel吗? 我们是否需要每次为每个实体创建将使用自定义模块上的数据表的服务合同? 它们对未来的发展真的很有趣吗? 为什么Magento的有时使用save/ load从模型控制器/块,有时不是? 谢谢

4
简单的Magento 2 CRUD模型所需的代码和配置示例?
作为最终用户程序员,我该如何在Magento 2中创建新的“ CRUD”模型?也就是说,我要创建PHP类文件和XML配置文件, 让我从数据库表中创建,读取,更新和删除数据 让我创建将存储此信息的初始数据库表。 在Magento 1中,这由模型,资源模型,设置资源模型和中的各种节点处理config.xml。目前尚不清楚100%在Magento 2中如何处理。 是否为此提供了示例模块或清晰的教程?还是从现有的核心模型(如CMS页面)中倒退是我们唯一的选择?
8 php  magento2  sql  crud 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.