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');

    }

}

Мне нужно поместить коллекцию в мой блок, чтобы получить значения базы данных. пожалуйста, помогите мне.

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