Ошибка Magento 2 - имя ресурса коллекции модели не определено

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

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

Компания / Модуль / Модель / Ресурс / Поставщик / Collection.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): имя ресурса коллекции модели не определено.


person mailman    schedule 01.02.2017    source источник


Ответы (2)


Вам нужно сделать следующее изменение.

Компания / Модуль / Модель / 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 / Поставщик / Collection.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'
        );
    }
}
person Dhiren Vasoya    schedule 07.02.2017
comment
попробуйте кешировать magento, а затем проверьте. - person Dhiren Vasoya; 09.02.2017

Проблема заключалась в том, что у меня был _constructor () вместо _construct ()

namespace Company\Module\Model;

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

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