【问题标题】:Error: Call to a member function create() on null in controller action错误:在控制器操作中调用 null 时的成员函数 create()
【发布时间】:2019-03-10 19:30:33
【问题描述】:

这是我的控制器动作类

<?php
namespace Felix\HelloMod\Controller\Files;
use Magento\Framework\App\Action\Action;
use Magento\Framework\App\Action\Context;
use Magento\Framework\View\Result\PageFactory;

class ProductFiles extends Action
{
    protected $_pagefactory;
    public function _construct(Context $context, PageFactory $pageFactory){
        $this->_pagefactory = $pageFactory;
        return parent::_construct($context);
    }
    public function execute(){
        return $this->_pagefactory->create();
    }
}

我遇到以下错误:

致命错误:未捕获的错误:在 C:\xampp\htdocs\Mage2\app\code\Felix\HelloMod\Controller\Files\ProductFiles.php:15 调用成员函数 create() on null 堆栈跟踪:# 0 C:\xampp\htdocs\Mage2\generated\code\Felix\HelloMod\Controller\Files\ProductFiles\Interceptor.php(37): Felix\HelloMod\Controller\Files\ProductFiles->execute() #1 C:\ xampp\htdocs\Mage2\vendor\magento\framework\App\Action\Action.php(107): Felix\HelloMod\Controller\Files\ProductFiles\Interceptor->execute() #2 C:\xampp\htdocs\Mage2\供应商\magento\framework\Interception\Interceptor.php(58): Magento\Framework\App\Action\Action->dispatch(Object(Magento\Framework\App\Request\Http)) #3 C:\xampp\htdocs\ Mage2\vendor\magento\framework\Interception\Interceptor.php(138): Felix\HelloMod\Controller\Files\ProductFiles\Interceptor->___callParent('dispatch', Array) #4 C:\xampp\htdocs\Mage2\vendor \magento\framework\Interception\Interceptor.php(153): Felix\HelloMod\Controller\Files\ProductFiles\Interceptor->Magento\Framework\Interce ption{closure}(Object(Magento\Framework in C:\xampp\htdocs\Mage2\app\code\Felix\HelloMod\Controller\Files\ProductFiles.php 第 15 行

【问题讨论】:

  • $pageFactory 未定义。可能是因为它没有正确传递给类。
  • 我想我确实在类定义之前在顶部定义了它。你建议我如何定义它。
  • 你在哪里使用这个类?在那里,您需要检查是否将正确的参数传递给 ProductFiles
  • 它的控制器动作类和它调用 create 方法,所以我不知道为什么会出现这个错误。
  • $pageFactory 来自哪里?它是未定义的。

标签: php magento magento2


【解决方案1】:

我错过了构造方法的双下划线并运行 php bin/magento setup:di:compile 并且它起作用了。

<?php
namespace Felix\HelloMod\Controller\Files;
use Magento\Framework\App\Action\Action;
use Magento\Framework\App\Action\Context;
use Magento\Framework\View\Result\PageFactory;

class ProductFiles extends Action
{
    protected $_pagefactory;
    public function __construct(Context $context, PageFactory $pageFactory){
        $this->_pagefactory = $pageFactory;
        return parent::__construct($context);
    }
    public function execute(){
        return $this->_pagefactory->create();
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-09
    • 2012-02-18
    • 1970-01-01
    • 2015-03-29
    • 2020-06-08
    • 2020-01-19
    • 2017-09-14
    • 2017-06-18
    相关资源
    最近更新 更多