Magento 2.2: getcollection не работает в блоке
Моя пользовательская коллекция не работает в файле блока Helloworld.php
<?php
namespace New\MyModule\Block;
use Magento\Framework\View\Element\Template\Context;
use Magento\Framework\View\Element\Template;
class Helloworld extends Template
{
protected $_modelFactory;
public function __construct(Context $context,
New\MyModule\Model\DataFactory $modelFactory,
array $data = array())
{
$this->_modelFactory = $modelFactory;
parent::__construct($context, $data);
}
public function getHelloCollection()
{
return $this->_modelFactory->create()->getCollection();
}
}
Файлы моделей:
Model\Data.php
<?php
namespace New\Model;
use Magento\Framework\Model\AbstractModel;
class Data extends AbstractModel
{
protected function _construct()
{
$this->_init('New\MyModule\Model\ResourceModel\Data');
}
}
Модель ресурсов:
Model\ResourceModel\Data.php
<?php
namespace New\MyModel\Model\ResourceModel;
use \Magento\Framework\Model\ResourceModel\Db\AbstractDb;
class Data extends AbstractDb
{
protected function _construct()
{
$this->_init('blog_posts', 'post_id');
}
}
Файл коллекции:
New\MyModule\model\ResourceModel\Data\Collection.php
<?php
namespace New\MyModule\Model\ResourceModel\Data;
use Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection;
class Collection extends AbstractCollection
{
protected function _construct()
{
$this->_init(
'New\MyModule\Model\Data',
'New\MyModule\Model\ResourceModel\Data');
}
}
Мне нужно поместить коллекцию в мой блок, чтобы получить значения базы данных. пожалуйста, помогите мне.
1
Author: Qaisar Satti, 2017-11-27
1 answers
Я протестировал этот код и обнаружил только одну ошибку
Изменение
public function __construct(Context $context,
New\MyModule\Model\DataFactory $modelFactory,
array $data = array())
{
$this->_modelFactory = $modelFactory;
parent::__construct($context, $data);
}
До
public function __construct(Context $context,
\New\MyModule\Model\DataFactory $modelFactory,
array $data = array())
{
$this->_modelFactory = $modelFactory;
parent::__construct($context, $data);
}
Ниже приведен мой код
QaisarSatti\HelloWorld\Model\Helloworld.php
<?php
namespace QaisarSatti\HelloWorld\Model;
class Helloworld extends \Magento\Framework\Model\AbstractModel
{
protected function _construct()
{
$this->_init('QaisarSatti\HelloWorld\Model\ResourceModel\Helloworld');
}
}
QaisarSatti\HelloWorld\Model\ResourceModel\Helloworld.php
<?php
namespace QaisarSatti\HelloWorld\Model\ResourceModel;
use \Magento\Framework\Model\ResourceModel\Db\AbstractDb;
class Helloworld extends AbstractDb
{
protected function _construct()
{
$this->_init('blog_posts', 'post_id');
}
}
QaisarSatti\HelloWorld\Model\ResourceModel\Helloworld\Collection.php
<?php
namespace QaisarSatti\HelloWorld\Model\ResourceModel\Helloworld;
use Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection;
class Collection extends AbstractCollection
{
protected function _construct()
{
$this->_init(
'QaisarSatti\HelloWorld\Model\Helloworld',
'QaisarSatti\HelloWorld\Model\ResourceModel\Helloworld');
}
}
Файл блока
QaisarSatti\HelloWorld\Block\HelloWorld.php
<?php
namespace QaisarSatti\HelloWorld\Block;
class HelloWorld extends \Magento\Framework\View\Element\Template
{
protected $_helloworldFactory;
public function __construct(
\Magento\Backend\Block\Template\Context $context,
\QaisarSatti\HelloWorld\Model\HelloworldFactory $helloworldFactory,
array $data = []
) {
$this->_helloworldFactory = $helloworldFactory;
parent::__construct($context, $data);
}
public function getHelloCollection()
{
return $this->_helloworldFactory->create()->getCollection();
}
}
2
Author: Qaisar Satti, 2017-11-27 12:06:43