magento 2.x中magento 1.x模型的等价物是什么

时间:2016-09-22 09:44:43

标签: php magento zend-framework magento2

我是magento2的新手,我发现很难在新版本中获得常规代码段。所以,请帮助我在这里解释magento2中以下片段的等价物:

Mage::getModel('catalog/product')->getCollection();
Mage::getModel('sales/order');
Mage::getModel('catalog/category')->getCollection();
Mage::getModel('customer/customer');
Mage::getModel('cart/quote');
Mage::getModel('checkout/cart');
Mage::getSingleton('customer/session');
Mage::getModel('catalog/category')->load(id);

我希望这个问题可以帮助所有新的magento 2开发人员在一个地方找到相关的查询。

1 个答案:

答案 0 :(得分:2)

在magento 2中,没有更多用于实例化模型的静态方法 你必须使用依赖注入 对于不可注射的模型,您可以使用将实例化模型的工厂 不可注射的是例如产品型号,订单型号......通常可以调用加载的东西。这包括收藏品 注射剂,你可以注入你的构造函数。
例如,客户会话是可注入的。

我们假设您必须在其中一个班级中使用上述模型 我将所有这些添加到一个类中,但您可以只使用您需要的内容。

class MyClass extends SomeOtherClass
{
    protected $productCollectionFactory;
    protected $orderFactory;
    protected $categoryCollectionFactory;
    protected $customerFactory;
    protected $cart;
    protected $customerSession;
    protected $categorFactory;
    public function __construct(
       ... //you can have some other parameters here
       \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollectionFactory,
        \Magento\Sales\Model\OrderFactory $orderFactory,
        \Magento\Catalog\Model\ResourceModel\Category\CollectionFactory $categoryCollectionFactory,
        \Magento\Customer\Model\CustomerFactory $customerFactory,
        \Magento\Checkout\Model\Cart $cart,
        \Magento\Customer\Model\Session $customerSession,
        \Magento\Catalog\Model\CategoryFactory $categoryFactory,
       ... //you can have other parameters here
    ) {
        ....
        $this->productCollectionFactory = $productCollectionFactory;
        $this->orderFactory = $orderFactory;
        $this->categoryCollectionFactory = $categoryCollectionFactory;
        $this->customerFactory = $customerFactory;
        $this->cart = $cart;
        $this->customerSession = $customerSession;
        $this->categoryFactory = $categorFactory;
        ....
    }
}

然后你可以在你的班级中使用它们。

要获得产品系列,您可以执行以下操作:

$productCollection = $this->productCollectionFactory->create();

要获得订单模型的意义,请执行以下操作:

$order = $this->orderFactory->create();

类别集合

$categoryCollection = $this->categoryCollectionFactory->create();

客户实例

$customer = $this->customerFactory->create();
magento 2中不存在

购物车/报价。

对于结帐购物车,您只需使用$this->cart,因为这是可注射的 同样适用于客户会话。这些是单身人士。

获取类别

 $category = $this->categoryFactory->create()->load($id);