2017-02-01 9 views
1

Я получаю учебники Magento 2, и у меня возникли проблемы с получением коллекции с фабрики моей пользовательской модели после вызова метода create(). Он выдает сообщение об ошибке «Имя ресурса коллекции модели не определено». Я уже очистил/var/поколение и перекомпилировал di.Ошибка Magento 2 - имя ресурса коллекции моделей не определено

Компания/модуль/модель/Vendor.php

namespace Company\Module\Model; 

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

Компания/модуль/модель/Resource/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' 
     ); 
    } 
} 

Компания/модуль/модель/Resource/Производитель/Коллекция. 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 исключение (ы): Исключение # 0 (Magento \ Framework \ Exception \ 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

hmm, попробовал это и по-прежнему имеет ту же проблему. – mailman

+0

попробуйте кэшировать пурпурный, а затем проверить. –