zend - 函数参数太少
zend - Too few arguments to function
在indexcontroller.php
代码中
namespace Application\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
class IndexController extends AbstractActionController
{
protected $table;
public function __construct($table)
{
$this->table=$table;
}
public function indexAction()
{
$users=$this->table->fetchall();
foreach($users as $user){
echo $user->getName().'<br/>';
}
exit;
return new ViewModel();
}
}
这是我的 module.php 文件代码
namespace Application;
use Zend\Db\Adapter\AdapterInterface;
use Zend\Db\TableGateway\TableGateway;
use Zend\Db\ResultSet\ResultSet;
use Zend\ModuleManager\Feature\ConfigProviderInterface;
class Module implements ConfigProviderInterface
{
const VERSION = '3.0.3-dev';
public function getConfig()
{
return include __DIR__ . '/../config/module.config.php';
}
public function getServiceConfig()
{
return [
'factories'=>[
Model\UserTable::class=>function($container){
$tableGateway=$container->get(Model\UserTableGateway::class);
return new MOdel\UserTable($tableGateway);
},
Model\UserTableGateway::class=>function($container){
$adapter=$container->get(AdapterInterface::class);
$resultSetPrototype=new ResultSet();
$resultSetPrototype->setArrayObjectPrototype(new Model\User);
return new TableGateway('user', $adapter, null, $resultSetPrototype);
}
]
];
}
public function getControllerConfig()
{
return[
'factories'=>[
Controller\IndexConroller::class=>function($container){
return new Controller\IndexController(
$container->get(Model\UserTable::class)
);
}
]
];
}
}
当 运行 此代码显示如下错误:
文件:
C:\xampp\htdocs\ZEND\ZendSkeletonApplication-master\module\Application\src\Controller\IndexController.php:17
留言:
Too few arguments to function
Application\Controller\IndexController::__construct(), 0 passed in
C:\xampp\htdocs\ZEND\ZendSkeletonApplication-master\vendor\zendframework\zend-servicemanager\src\Factory\InvokableFactory.php
on line 30 and exactly 1 expected
有人可以帮我解决这个问题吗?
谢谢
在您的 module.php 文件中,模型应该是模型。
public function getServiceConfig()
{
return [
'factories'=>[
Model\UserTable::class=>function($container){
$tableGateway=$container->get(Model\UserTableGateway::class);
**return new MOdel\UserTable($tableGateway);**
},
Model\UserTableGateway::class=>function($container){
$adapter=$container->get(AdapterInterface::class);
$resultSetPrototype=new ResultSet();
$resultSetPrototype->setArrayObjectPrototype(new Model\User);
return new TableGateway('user', $adapter, null, $resultSetPrototype);
}
]
];
}
在indexcontroller.php
代码中
namespace Application\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
class IndexController extends AbstractActionController
{
protected $table;
public function __construct($table)
{
$this->table=$table;
}
public function indexAction()
{
$users=$this->table->fetchall();
foreach($users as $user){
echo $user->getName().'<br/>';
}
exit;
return new ViewModel();
}
}
这是我的 module.php 文件代码
namespace Application;
use Zend\Db\Adapter\AdapterInterface;
use Zend\Db\TableGateway\TableGateway;
use Zend\Db\ResultSet\ResultSet;
use Zend\ModuleManager\Feature\ConfigProviderInterface;
class Module implements ConfigProviderInterface
{
const VERSION = '3.0.3-dev';
public function getConfig()
{
return include __DIR__ . '/../config/module.config.php';
}
public function getServiceConfig()
{
return [
'factories'=>[
Model\UserTable::class=>function($container){
$tableGateway=$container->get(Model\UserTableGateway::class);
return new MOdel\UserTable($tableGateway);
},
Model\UserTableGateway::class=>function($container){
$adapter=$container->get(AdapterInterface::class);
$resultSetPrototype=new ResultSet();
$resultSetPrototype->setArrayObjectPrototype(new Model\User);
return new TableGateway('user', $adapter, null, $resultSetPrototype);
}
]
];
}
public function getControllerConfig()
{
return[
'factories'=>[
Controller\IndexConroller::class=>function($container){
return new Controller\IndexController(
$container->get(Model\UserTable::class)
);
}
]
];
}
}
当 运行 此代码显示如下错误:
文件:
C:\xampp\htdocs\ZEND\ZendSkeletonApplication-master\module\Application\src\Controller\IndexController.php:17
留言:
Too few arguments to function Application\Controller\IndexController::__construct(), 0 passed in C:\xampp\htdocs\ZEND\ZendSkeletonApplication-master\vendor\zendframework\zend-servicemanager\src\Factory\InvokableFactory.php on line 30 and exactly 1 expected
有人可以帮我解决这个问题吗?
谢谢
在您的 module.php 文件中,模型应该是模型。
public function getServiceConfig()
{
return [
'factories'=>[
Model\UserTable::class=>function($container){
$tableGateway=$container->get(Model\UserTableGateway::class);
**return new MOdel\UserTable($tableGateway);**
},
Model\UserTableGateway::class=>function($container){
$adapter=$container->get(AdapterInterface::class);
$resultSetPrototype=new ResultSet();
$resultSetPrototype->setArrayObjectPrototype(new Model\User);
return new TableGateway('user', $adapter, null, $resultSetPrototype);
}
]
];
}