Magento2'de bir model nasıl oluşturulur?


14

Magento2'de olduğu gibi basit bir şey yapmanın bir yolu var mı?

magento 2'de böyle fonksiyon çağırın,

$model = Mage::getModel('cms/page');

soru açık değil daha fazla ayrıntı koymak ....
Amit Bera

Yanıtlar:


28

Magento, ObjectManager'ın kullanımını doğrudan engeller. Tüm senaryolar için onu soyutlayan hizmet sınıfları sağlar.

Enjekte edilemeyen tüm modeller (modeller) için fabrika kullanmanız gerekir:

korumalı $ pageFactory;

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

genel işlev someFunc ()
{
    ...
    $ page = $ this-> pageFactory-> create ();
    ...
}

Yapmanız gereken tek şey yapıcıda istenilen modelin fabrikaya sormaktır. Magento veya derleyiciyi çalıştırdığınızda otomatik olarak oluşturulur.


11

Bunu şöyle yapabilirsiniz:

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

ancak _objectManagerüyenin var olduğundan emin olmalısınız .

Sınıfların çoğunda yapmalı, ancak yapıcıya enjekte etmiyorsa. Bunun gibi:

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

[bir yıl sonra düzenleyin]
Yukarıdaki cevap işe yarar olsa bile, bu en iyi uygulama değildir. Bunu yapmanın doğru yolu için Anton'un cevabına bakınız.


hata oluştu - Class Magento \ Framework \ ObjectManager mevcut değil
Anas Mansuri

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.