Magento 2 当我得到我的帖子时框架错误


magento 2 framework error when i get my posts

当我尝试从这样的数据库中获取我的帖子时:

public function getPosts()
    {
        if(!$this->hasData('posts'))
        {
            $posts = $this->_postCollectionFactory
                     ->create();
            $this->setData('posts', $posts);
        }
        return $this->getData('posts');
    }

Magento给我这个错误:

( !致命错误:在第 531 行的/var/www/myproject/vendor/magento/framework/Model/ResourceModel/Db/Collection/AbstractCollection.php 中调用成员函数 dispatch()

这是我的帖子模型:

<?php 
    namespace Ilio'Press'Model;
    use Ilio'Press'Api'Data'PostInterface;
    use Magento'Framework'DataObject'IdentityInterface;
    use Magento'Framework'Model'AbstractModel;
    class Post extends AbstractModel implements IdentityInterface, PostInterface
    {
        protected $_cacheTag    = 'press_post';
        protected $_eventPrefix = 'press_post';
        // IdentityInterface
        public function getIdentities()
        {
            return ['press_post_' . $this->getId()];
        }
        // PostInterface
        public function getId()
        {
            return $this->getData(self::POST_ID);
        }
        public function getUrl()
        {
            return $this->getData(self::URL);
        }
        public function getTitle()
        {
            return $this->getData(self::TITLE);
        }
        public function getCover()
        {
            return $this->getData(self::COVER);
        }
        public function getContent()
        {
            return $this->getData(self::CONTENT);
        }
        public function getCreated()
        {
            return $this->getData(self::CREATED);
        }
        public function getModified()
        {
            return $this->getData(self::MODIFIED);
        }
        public function setId($id)
        {
            return $this->setData(self::POST_ID, $id);
        }
        public function setUrl($url)
        {
            return $this->setData(self::URL, $url);
        }
        public function setTitle($title)
        {
            return $this->setData(self::TITLE, $title);
        }
        public function setCover($cover)
        {
            return $this->setData(self::COVER, $cover);
        }
        public function setContent($content)
        {
            return $this->setData(self::CONTENT, $content);
        }
        public function setCreated($created)
        {
            return $this->setData(self::CREATED, $created);
        }
        public function setModified($modified)
        {
            return $this->setData(self::MODIFIED, $modified);
        }
    }

这是我的收藏:

<?php 
    namespace Ilio'Press'Model'ResourceModel;
    use Magento'Framework'Model'ResourceModel'Db'AbstractDb;
    use Magento'Framework'Model'ResourceModel'Db'Context;
    use Magento'Framework'Stdlib'DateTime'DateTime;
    use Magento'Framework'Model'AbstractModel;
    class Post extends AbstractDb
    {
        protected $_date;
        public function __construct(Context $context, DateTime $date, $prefix = null)
        {
            parent::__construct($context, $prefix);
            $this->_date = $date;
        }
        public function _construct()
        {
            $this->_init('ilio_press_post', 'id');
        }
        public function load('Magento'Framework'Model'AbstractModel $object, $value, $field = null)
        {
            return parent::load($object, $value, $field);
        }
        protected function _beforeSave(AbstractModel $object)
        {
            if($object->isObjectNew() && !$object->hasCreationTime())
                $object->setCreationTime($this->_date->gmtDate());
            $object->setUpdateTime($this->_date->gmtDate());
            return parent::_beforeSave($object);
        }
    }

这是我的完整堆栈:

( ! ) Fatal error: Call to a member function dispatch() on null in /var/www/fdsffds/vendor/magento/framework/Model/ResourceModel/Db/Collection/AbstractCollection.php on line 531
Call Stack
#   Time    Memory  Function    Location
1   0.0003  243464  {main}( )   .../index.php:0
2   0.6459  4132016 Magento'Framework'App'Bootstrap->run( ) .../index.php:39
3   0.6495  4167192 Magento'Framework'App'Http->launch( )   .../Bootstrap.php:258
4   2.7653  16419816    Magento'Framework'View'Result'Page'Interceptor->renderResult( ) .../Http.php:119
5   2.7653  16420344    Magento'Framework'View'Result'Page'Interceptor->___callPlugins( )   .../Interceptor.php:130
6   2.7654  16428984    call_user_func_array:{/var/www/fdsfdsfdsf/vendor/magento/framework/Interception/Interceptor.php:141} ( )    .../Interceptor.php:141
7   2.7654  16429400    Magento'PageCache'Model'Controller'Result'BuiltinPlugin->aroundRenderResult( )  .../Interceptor.php:141
8   2.7654  16429440    Magento'Framework'View'Result'Page'Interceptor->Magento'Framework'Interception'{closure}( ) .../BuiltinPlugin.php:67
9   2.7654  16429744    Magento'Framework'Interception'Chain'Chain->invokeNext( )   .../Interceptor.php:136
10  2.7656  16439136    call_user_func_array:{/var/www/fdsfdsfds/vendor/magento/framework/Interception/Chain/Chain.php:68} ( )  .../Chain.php:68
11  2.7656  16439384    Magento'PageCache'Model'Controller'Result'VarnishPlugin->aroundRenderResult( )  .../Chain.php:68
12  2.7656  16439424    Magento'Framework'Interception'Chain'Chain->Magento'Framework'Interception'Chain'{closure}( )   .../VarnishPlugin.php:74
13  2.7656  16439728    Magento'Framework'Interception'Chain'Chain->invokeNext( )   .../Chain.php:63
14  2.7657  16439936    Magento'Framework'View'Result'Page'Interceptor->___callParent( )    .../Chain.php:70
15  2.7657  16440424    call_user_func_array:{/var/www/fdsfdsfds/vendor/magento/framework/Interception/Interceptor.php:74} ( )  .../Interceptor.php:74
16  2.7657  16440912    Magento'Framework'View'Result'Layout->renderResult( )   .../Interceptor.php:74
17  2.7657  16441496    Magento'Framework'View'Result'Page->render( )   .../Layout.php:162
18  8.6429  20093064    Magento'Framework'View'Layout'Interceptor->getOutput( ) .../Page.php:241
19  8.6429  20093248    Magento'Framework'View'Layout'Interceptor->___callPlugins( )    .../Interceptor.php:494
20  8.6429  20093864    call_user_func_array:{/var/www/fdsfdsfds/vendor/magento/framework/Interception/Interceptor.php:144} ( ) .../Interceptor.php:144
21  8.6429  20094096    Magento'Framework'View'Layout->getOutput( ) .../Interceptor.php:144
22  8.7088  20158240    Magento'Framework'View'Layout'Interceptor->renderElement( ) .../Layout.php:938
23  8.7088  20158336    Magento'Framework'View'Layout->renderElement( ) .../Interceptor.php:193
24  8.7088  20158336    Magento'Framework'View'Layout'Interceptor->renderNonCachedElement( )    .../Layout.php:472
25  8.7088  20158384    Magento'Framework'View'Layout->renderNonCachedElement( )    .../Interceptor.php:206
26  8.7088  20158432    Magento'Framework'View'Layout->_renderContainer( )  .../Layout.php:520
27  8.7088  20158872    Magento'Framework'View'Layout'Interceptor->renderElement( ) .../Layout.php:569
28  8.7088  20158968    Magento'Framework'View'Layout->renderElement( ) .../Interceptor.php:193
29  8.7088  20158968    Magento'Framework'View'Layout'Interceptor->renderNonCachedElement( )    .../Layout.php:472
30  8.7088  20159016    Magento'Framework'View'Layout->renderNonCachedElement( )    .../Interceptor.php:206
31  8.7089  20159064    Magento'Framework'View'Layout->_renderContainer( )  .../Layout.php:520
32  8.7089  20159496    Magento'Framework'View'Layout'Interceptor->renderElement( ) .../Layout.php:569
33  8.7089  20159592    Magento'Framework'View'Layout->renderElement( ) .../Interceptor.php:193
34  8.7089  20159592    Magento'Framework'View'Layout'Interceptor->renderNonCachedElement( )    .../Layout.php:472
35  8.7089  20159640    Magento'Framework'View'Layout->renderNonCachedElement( )    .../Interceptor.php:206
36  8.7090  20159688    Magento'Framework'View'Layout->_renderContainer( )  .../Layout.php:520
37  9.1222  22644824    Magento'Framework'View'Layout'Interceptor->renderElement( ) .../Layout.php:569
38  9.1222  22644920    Magento'Framework'View'Layout->renderElement( ) .../Interceptor.php:193
39  9.1222  22644920    Magento'Framework'View'Layout'Interceptor->renderNonCachedElement( )    .../Layout.php:472
40  9.1222  22644968    Magento'Framework'View'Layout->renderNonCachedElement( )    .../Interceptor.php:206
41  9.1223  22645016    Magento'Framework'View'Layout->_renderContainer( )  .../Layout.php:520
42  9.1274  22647056    Magento'Framework'View'Layout'Interceptor->renderElement( ) .../Layout.php:569
43  9.1274  22647152    Magento'Framework'View'Layout->renderElement( ) .../Interceptor.php:193
44  9.1274  22647152    Magento'Framework'View'Layout'Interceptor->renderNonCachedElement( )    .../Layout.php:472
45  9.1274  22647200    Magento'Framework'View'Layout->renderNonCachedElement( )    .../Interceptor.php:206
46  9.1274  22647248    Magento'Framework'View'Layout->_renderContainer( )  .../Layout.php:520
47  9.1275  22647848    Magento'Framework'View'Layout'Interceptor->renderElement( ) .../Layout.php:569
48  9.1275  22647944    Magento'Framework'View'Layout->renderElement( ) .../Interceptor.php:193
49  9.1275  22647944    Magento'Framework'View'Layout'Interceptor->renderNonCachedElement( )    .../Layout.php:472
50  9.1275  22647992    Magento'Framework'View'Layout->renderNonCachedElement( )    .../Interceptor.php:206
51  9.1275  22648040    Magento'Framework'View'Layout->_renderContainer( )  .../Layout.php:520
52  9.1275  22648472    Magento'Framework'View'Layout'Interceptor->renderElement( ) .../Layout.php:569
53  9.1275  22648568    Magento'Framework'View'Layout->renderElement( ) .../Interceptor.php:193
54  9.1275  22648568    Magento'Framework'View'Layout'Interceptor->renderNonCachedElement( )    .../Layout.php:472
55  9.1275  22648616    Magento'Framework'View'Layout->renderNonCachedElement( )    .../Interceptor.php:206
56  9.1275  22648664    Magento'Framework'View'Layout->_renderContainer( )  .../Layout.php:520
57  9.1466  22663688    Magento'Framework'View'Layout'Interceptor->renderElement( ) .../Layout.php:569
58  9.1466  22663784    Magento'Framework'View'Layout->renderElement( ) .../Interceptor.php:193
59  9.1466  22663784    Magento'Framework'View'Layout'Interceptor->renderNonCachedElement( )    .../Layout.php:472
60  9.1467  22663832    Magento'Framework'View'Layout->renderNonCachedElement( )    .../Interceptor.php:206
61  9.1467  22663880    Magento'Framework'View'Layout->_renderContainer( )  .../Layout.php:520
62  9.1676  22688600    Magento'Framework'View'Layout'Interceptor->renderElement( ) .../Layout.php:569
63  9.1676  22688696    Magento'Framework'View'Layout->renderElement( ) .../Interceptor.php:193
64  9.1676  22688696    Magento'Framework'View'Layout'Interceptor->renderNonCachedElement( )    .../Layout.php:472
65  9.1676  22688744    Magento'Framework'View'Layout->renderNonCachedElement( )    .../Interceptor.php:206
66  9.1676  22688792    Magento'Framework'View'Layout->_renderBlock( )  .../Layout.php:518
67  9.1676  22689072    Magento'Framework'View'Element'AbstractBlock->toHtml( ) .../Layout.php:542
68  9.1677  22689776    Magento'Framework'View'Element'Template->_toHtml( ) .../AbstractBlock.php:652
69  9.1689  22690448    Magento'Framework'View'Element'Template->fetchView( )   .../Template.php:279
70  9.1695  22691032    Magento'Framework'View'TemplateEngine'Php->render( )    .../Template.php:255
71  9.1714  22708568    include( '/var/www/fdsfdsfds/app/code/Ilio/Press/view/frontend/templates/list.phtml' )  .../Php.php:59
72  9.1802  22812056    Magento'Framework'Data'Collection->getIterator( )   .../Php.php:1
73  9.1802  22812104    Magento'Framework'Data'Collection'AbstractDb->load( )   .../Collection.php:820
74  9.1802  22812496    Magento'Framework'Data'Collection'AbstractDb->loadWithFilter( ) .../AbstractDb.php:550
75  9.1802  22812608    Magento'Framework'Model'ResourceModel'Db'Collection'AbstractCollection->_beforeLoad( )  .../AbstractDb.php:562

这是一个$posts var_dump:

  object(Ilio'Press'Model'ResourceModel'Post'Collection)[871]
  public '_idFieldName' => string 'id' (length=2)
  protected '_model' => string 'Ilio'Press'Model'Post' (length=21)
  protected '_resourceModel' => string 'Ilio'Press'Model'ResourceModel'Post' (length=35)
  protected '_resource' => null
  protected '_fieldsToSelect' => null
  protected '_initialFieldsToSelect' => null
  protected '_fieldsToSelectChanged' => boolean false
  protected '_joinedTables' => 
    array (size=0)
      empty
  protected '_mainTable' => null
  protected '_resetItemsDataChanged' => boolean false
  protected '_eventPrefix' => string '' (length=0)
  protected '_eventObject' => string '' (length=0)
  protected '_eventManager' => null
  protected '_conn' => null
  protected '_select' => null
  protected '_bindParams' => 
    array (size=0)
      empty
  protected '_data' => null
  protected '_map' => null
  protected '_fetchStmt' => null
  protected '_isOrdersRendered' => boolean false
  protected '_logger' => null
  private '_fetchStrategy' (Magento'Framework'Data'Collection'AbstractDb) => null
  protected 'extensionAttributesJoinProcessor' => null
  protected '_items' => 
    array (size=0)
      empty
  protected '_itemObjectClass' => string 'Ilio'Press'Model'Post' (length=21)
  protected '_orders' => 
    array (size=0)
      empty
  protected '_filters' => 
    array (size=0)
      empty
  protected '_isFiltersRendered' => boolean false
  protected '_curPage' => int 1
  protected '_pageSize' => boolean false
  protected '_totalRecords' => null
  protected '_isCollectionLoaded' => null
  protected '_flags' => 
    array (size=0)
      empty
  protected '_entityFactory' => null

尝试将class Post extends AbstractDb替换为class Post extends 'Magento'Framework'Model'ResourceModel'Db'AbstractDb . 因为您将类从 Magento'Framework'Data'Collection'AbstractDb.php . 附言对不起我的英语