Невозможно отобразить значения таблиц базы данных на интерфейсе в magento 2.1.7


Я пытаюсь получить таблицу на интерфейсе, но получаю эту ошибку

Неустранимая ошибка: класс 'Crud\Crudatfrontend\Model\Resourcemodel\Post' не найден в D:\xampp\htdocs\newmag\vendor\magento\framework\ObjectManager\Factory\AbstractFactory.php в строке 93

app/code/Crud/Crudatfrontend/
├── Block
│   └── index.php         
├── etc
│    └── module.xml
├── Model
│   ├── Post.php
│   ├── ResourceModel
│   │   ├── Post
│   │   │   └── Collection.php
│   │   └── Post.php
├── registration.php
├── Setup
│   └── InstallSchema.php
└── view
    └── frontend
        ├── layout
        │   └── crud_index_index.xml
        ├── templates
            └── index.phtml

Вот мой код,

Block/Index.php

<?php

namespace Crud\Crudatfrontend\Block;

use Magento\Framework\App\Filesystem\DirectoryList;

class Index extends \Magento\Framework\View\Element\Template
{
    protected $_filesystem;

    public function __construct(
        \Magento\Framework\View\Element\Template\Context $context,
        \Crud\Crudatfrontend\Model\PostFactory $postFactory
        )
    {           
        parent::__construct($context);
        $this->_postFactory = $postFactory;
    }   

    public function getResult()
    {
        $post = $this->_postFactory->create();
        $collection = $post->getCollection();
        return $collection;
    }
}

Model/Post.php

<?php
namespace Crud\Crudatfrontend\Model;
class Post extends \Magento\Framework\Model\AbstractModel implements \Magento\Framework\DataObject\IdentityInterface
{
        protected function _construct()
        {
                $this->_init('Crud\Crudatfrontend\Model\ResourceModel\Post');
        }

        public function getIdentities()
        {
                return [self::CACHE_TAG . '_' . $this->getId()];
        }

        public function getDefaultValues()
        {
                $values = [];

                return $values;
        }
}

Model\ResourceModel\Post.php

<?php

namespace Crud\Crudatfrontend\Model\ResourceModel;

use \Magento\Framework\Model\ResourceModel\Db\AbstractDb;

class HelloWorld extends AbstractDb
{
    /**
     * Model initialization
     */
    protected function _construct()
    {
        $this->_init('Crud_Crudatfrontend', 'post_id');
    }
}

Model\ResourceModel\Post\collection.php

<?php
namespace Crud\Crudatfrontend\Model\ResourceModel\Post;

class Collection extends \Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection
{
        /**
         * Define resource model
         *
         * @return void
         */
        protected function _construct()
        {
                $this->_init('Crud\Crudatfrontend\Model\Post', 'Crud\Crudatfrontend\Model\ResourceModel\Post');
        }
}
Author: Bhakti Thakkar, 2019-04-09

1 answers

Неверное имя класса ресурсов

Класс HelloWorld расширяет базу данных AbstractDb

Это должно быть

Класс Post расширяет базу данных AbstractDb

Измените его на Model\ResourceModel\Post.php

 2
Author: Amit Bera, 2019-04-09 10:18:56