Magento 2 错误 - 未定义模型集合资源名称
Magento 2 Error - Model collection resource name is not defined
我正在阅读 Magento 2 教程,但在调用 create() 方法后无法从自定义模型的工厂获取集合。它抛出一个错误说 "Model collection resource name is not defined"。我已经清除 /var/generation 并重新编译了 di.
Company/Module/Model/Vendor.php
namespace Company\Module\Model;
class Vendor extends \Magento\Framework\Model\AbstractModel {
protected function _constructor() {
$this->_init('Company\Module\Model\Resource\Vendor');
}
}
Company/Module/Model/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'
);
}
}
Company/Module/Model/Resource/Vendor/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'
);
}
}
Company/Module/Block/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):未定义模型集合资源名称。
您需要进行以下更改。
Company/Module/Model/Vendor.php
namespace Company\Module\Model;
class Vendor extends \Magento\Framework\Model\AbstractModel {
protected function _constructor() {
$this->_init('Company\Module\Model\ResourceModel\Vendor');
}
}
Company/Module/Model/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');
}
}
Company/Module/Model/ResourceModel/Vendor/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'
);
}
}
问题是我用的是 _constructor() 而不是 _construct()
namespace Company\Module\Model;
class Vendor extends \Magento\Framework\Model\AbstractModel {
protected function _construct() {
$this->_init('Company\Module\Model\Resource\Vendor');
}
}
我正在阅读 Magento 2 教程,但在调用 create() 方法后无法从自定义模型的工厂获取集合。它抛出一个错误说 "Model collection resource name is not defined"。我已经清除 /var/generation 并重新编译了 di.
Company/Module/Model/Vendor.php
namespace Company\Module\Model;
class Vendor extends \Magento\Framework\Model\AbstractModel {
protected function _constructor() {
$this->_init('Company\Module\Model\Resource\Vendor');
}
}
Company/Module/Model/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'
);
}
}
Company/Module/Model/Resource/Vendor/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'
);
}
}
Company/Module/Block/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):未定义模型集合资源名称。
您需要进行以下更改。
Company/Module/Model/Vendor.php
namespace Company\Module\Model;
class Vendor extends \Magento\Framework\Model\AbstractModel {
protected function _constructor() {
$this->_init('Company\Module\Model\ResourceModel\Vendor');
}
}
Company/Module/Model/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');
}
}
Company/Module/Model/ResourceModel/Vendor/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'
);
}
}
问题是我用的是 _constructor() 而不是 _construct()
namespace Company\Module\Model;
class Vendor extends \Magento\Framework\Model\AbstractModel {
protected function _construct() {
$this->_init('Company\Module\Model\Resource\Vendor');
}
}