有没有办法像magento2一样做一些简单的事情?

在magento 2中调用这样的函数,

$model = Mage::getModel('cms/page');
有帮助吗?

解决方案

Magento严格劝阻直接使用ObjectManager。它提供了向所有场景摘要的服务类。

对于所有非注射剂(型号),您必须使用工厂:

protected $pageFactory;

public function __construct(\Magento\Cms\Model\PageFactory $pageFactory)
{
    $this->pageFactory = $pageFactory;
}

public function someFunc()
{
    ...
    $page = $this->pageFactory->create();
    ...
}
.

所有您所要做的就是在构造函数中询问所需模型的工厂。运行magento或编译器时会自动生成。

其他提示

您可以这样做:

$model = $this->_objectManager->create('Full\Model\Class\Name\Here');
.

,但您必须确保存在的属性icetagcode成员存在。

在大多数类中,它应该,但如果它不会在构造函数中注射它。像这样:

protected $_objectManager;
public function __construct(
   ...,
   \Magento\Framework\ObjectManager $objectManager,
   ....
){
    ....
    $this->_objectManager= $objectManager;
    ....
}
.

[编辑一年]
即使上面的答案是有用的,它也不是最好的做法。出于正确的方式,看看安东尼的答案。

从技术上讲,如果您有一个实例 \Magento\Framework\ObjectManager 你可以打电话 createget 这会给你你想要的东西。但这实际上取决于您想在哪里使用它,因为 Magento 2 转向 通过构造函数进行依赖注入.

许可以下: CC-BY-SA归因
scroll top