为了账号安全,请及时绑定邮箱和手机立即绑定

传递给Controller \ foo的参数1必须是Controller \ foo的实例

传递给Controller \ foo的参数1必须是Controller \ foo的实例

PHP
Cats萌萌 2021-04-09 17:19:02
我是Zend Framework的新手。我在稳固的Zend教程网站(从A到Z)后面。我被困在这里..请帮助我来自SO的一些解决方案没有太大帮助..确实做了什么,但是什么也没做。.与Zend Framework 2相同的帖子如下 :传递给Album \ Controller \ AlbumController :: __ construct()的参数1必须是Album \ Controller \ AlbumTable的实例出现此错误Argument 1 passed to Album\Controller\AlbumController::__construct() must be an instance of Album\Controller\AlbumTable, instance of Album\Model\AlbumTable given, called in C:\xampp\htdocs\zendF\module\Album\src\Module.php on line 43我的Module.php<?phpnamespace Album;use Zend\Db\Adapter\AdapterInterface;use Zend\Db\ResultSet\ResultSet;use Zend\Db\TableGateway\TableGateway;use Zend\ModuleManager\Feature\ConfigProviderInterface;class Module implements ConfigProviderInterface{    public function getConfig()    {        return include __DIR__ . '/../config/module.config.php';    }    public function getServiceConfig()    {        return [            'factories' => [                Model\AlbumTable::class => function($container) {                    $tableGateway = $container->get(Model\AlbumTableGateway::class);                    return new Model\AlbumTable($tableGateway);                },                Model\AlbumTableGateway::class => function ($container) {                    $dbAdapter = $container->get(AdapterInterface::class);                    $resultSetPrototype = new ResultSet();                    $resultSetPrototype->setArrayObjectPrototype(new Model\Album());                    return new TableGateway('album', $dbAdapter, null, $resultSetPrototype);                },            ],        ];    }    public function getControllerConfig()    {        return [            'factories' => [                Controller\AlbumController::class => function($container) {                    return new Controller\AlbumController(                        $container->get(Model\AlbumTable::class)                    );                },            ],        ];    }}?>
查看完整描述

1 回答

?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

您应该将依赖项放在名称空间之后。

试试这个:


<?php


    namespace Album\Controller;


    use Zend\Mvc\Controller\AbstractActionController;

    use Zend\View\Model\ViewModel;

    use Album\Model\AlbumTable;


    class AlbumController extends AbstractActionController

    {


        private $table;


        public function __construct(AlbumTable $table)

        {

            $this->table = $table;

        }


        public function indexAction() {

            return new ViewModel([

                'albums' => $this->table->fetchAll(),

            ]);

        }


        public function addAction() {

        }


        public function editAction() {

        }


        public function deleteAction() {

        }

    }


查看完整回答
反对 回复 2021-04-23
  • 1 回答
  • 0 关注
  • 115 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信