2017-02-01 3 views
1

Magento 2のチュートリアルを行っていますが、create()メソッドを呼び出した後、カスタムモデルの工場からコレクションを取得できません。 「モデルコレクションリソース名が定義されていません」というエラーが表示されます。私はすでに/ var/generationをクリアしてdiを再コンパイルしました。Magento 2 Error - モデルコレクションのリソース名が定義されていません

会社/モジュール/モデル/ Vendor.php

namespace Company\Module\Model; 

class Vendor extends \Magento\Framework\Model\AbstractModel { 
    protected function _constructor() { 
     $this->_init('Company\Module\Model\Resource\Vendor'); 
    } 
} 

会社/モジュール/モデル/リソース/ Vendor.php

namespace Company\Module\Model\Resource; 

class Vendor extends \Magento\Framework\Model\ResourceModel\Db\AbstractDb 
{ 
    protected function _construct() 
    { 
     $this->_init(
      'company_vendor', 
      'vendor_id' 
     ); 
    } 
} 

会社/モジュール/モデル/リソース/ベンダー/コレクション。 PHP

namespace Company\Module\Model\Resource\Vendor; 

class Collection extends \Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection 
{ 
    protected function _construct() 
    { 
     $this->_init(
      'Company\Module\Model\Vendor', 
      'Company\Module\Model\Resource\Vendor' 
     ); 
    } 
} 

会社/モジュール/ブロック/ VendorList.php

namespace Company\Module\Block; 

class VendorList extends \Magento\Framework\View\Element\Template { 

    protected $vendorFactory; 


    public function __construct(\Magento\Framework\View\Element\Template\Context $context, 
           \Company\Module\Model\VendorFactory $vendorFactory, 
           array $data = []) 
    { 
     parent::__construct($context, $data); 
     $this->vendorFactory = $vendorFactory; 
    } 

    public function getVendors() { 
     return $this->vendorFactory->create()->getCollection()->getItems(); //fails on getCollection() 
    } 

これは私が取得エラーです:

1例外(S): 例外#0(Magentoの\ Frameworkの\例外の\ LocalizedException):モデルコレクションリソース名が定義されていません。

答えて

0

問題は、私は_constructor()の代わりに、_construct()

を有していました
namespace Company\Module\Model; 

class Vendor extends \Magento\Framework\Model\AbstractModel { 

    protected function _construct() { 
     $this->_init('Company\Module\Model\Resource\Vendor'); 
    } 
} 
0

次の変更を行う必要があります。

会社/モジュール/モデル/ Vendor.php

namespace Company\Module\Model; 

class Vendor extends \Magento\Framework\Model\AbstractModel { 
    protected function _constructor() { 
     $this->_init('Company\Module\Model\ResourceModel\Vendor'); 
    } 
} 

会社/モジュール/モデル/ ResourceModel/Vendor.php

namespace Company\Module\Model\ResourceModel; 

class Vendor extends \Magento\Framework\Model\ResourceModel\Db\AbstractDb 
{ 
    protected function _construct() 
    { 
     $this->_init('company_vendor','vendor_id'); 
    } 
} 

会社/モジュール/モデル/ ResourceModel /ベンダー/コレクション。 PHP

namespace Company\Module\Model\ResourceModel\Vendor; 

class Collection extends \Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection 
{ 
    public function _construct() 
    { 
     $this->_init('Company\Module\Model\Vendor','Company\Module\Model\ResourceModel\Vendor' 
     ); 
    } 
} 
+0

ええと、これを試しても同じ問題があります。 – mailman

+0

magentoをキャッシュして確認してください。 –

関連する問題