magento2에서 모델을 인스턴스화하는 방법은 무엇입니까?


14

magento2 에서처럼 간단한 작업을 수행하는 방법이 있습니까?

magento 2에서 이와 같은 호출 함수

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

질문은 더 자세한 내용을 명쾌하지 않습니다 ....
Amit Bera

답변:


28

Magento는 ObjectManager의 사용을 직접 권장하지 않습니다. 모든 시나리오에서이를 추상화하는 서비스 클래스를 제공합니다.

주사 불가 제품 (모델)은 모두 공장을 사용해야합니다.

보호 된 $ pageFactory;

공용 함수 __construct (\ Magento \ Cms \ Model \ PageFactory $ pageFactory)
{
    $ this-> pageFactory = $ pageFactory;
}

공용 함수 someFunc ()
{
    ...
    $ page = $ this-> pageFactory-> create ();
    ...
}

생성자에서 원하는 모델의 팩토리를 요청하면됩니다. Magento 또는 컴파일러를 실행할 때 자동으로 생성됩니다.


11

다음과 같이 할 수 있습니다.

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

그러나 _objectManager멤버가 존재 하는지 확인해야 합니다.

대부분의 클래스에서는 생성자에 삽입하지 않으면 클래스에 있어야합니다. 이처럼 :

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

[1 년 후 편집]
위의 답변이 효과가 있지만 최선의 방법은 아닙니다. 올바른 방법은 Anton의 대답을 참조하십시오.


오류가 발생했습니다-클래스 Magento \ Framework \ ObjectManager가 없습니다
Anas Mansuri

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.