我已经下载了Zend Framework 2的骨架应用程序。然后我创建了一个名为“User”的模块。
文件夹结构;
Module
.....
User
config
module.config.php
src
Controller
UserController.php
Model
User.php
UserTable.php
Form
Module.php
view
index.phtml
...
我在应用程序的modules.config.php中添加了'User'
return [
'Zend\Form',
'Zend\Db',
'Zend\Router',
'Zend\Validator',
'Application',
'User',
];
我的Module.php代码如下;
<?php
namespace User;
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\UserTable::class => function($container) {
$tableGateway = $container->get(Model\UserTableGateway::class);
return new Model\UserTable($tableGateway);
},
Model\UserTableGateway::class => function ($container) {
$dbAdapter = $container->get(AdapterInterface::class);
$resultSetPrototype = new ResultSet();
$resultSetPrototype->setArrayObjectPrototype(new Model\User());
return new TableGateway('user', $dbAdapter, null, $resultSetPrototype);
},
],
];
}
public function getControllerConfig()
{
return [
'factories' => [
Controller\UserController::class => function($container) {
return new Controller\UserController(
$container->get(Model\UserTable::class)
);
},
],
];
}
}
在composer.json里面
"autoload": {
"psr-4": {
"Application\\": "module/Application/src/",
"User\\": "module/User/src/",
}
},
但是我收到错误“模块(用户)无法初始化”。我是Zend Framework的新手。我认为Module.php中有问题。我在 stackoverflow 中尝试了所有答案。其中大多数都表示名称空间问题。但我想我已经说得对了。 如果需要更多代码,请指出问题,请提及。
答案 0 :(得分:0)
我假设您使用文件夹结构PSR-4
,我没有看到Module.php
,但它应该在src
目录中。
另外,请确保将模块添加到composer.json
,方法与添加Application
模块的方式相同:
"autoload": {
"psr-4": {
"Application\\": "module/Application/src/",
"User\\": "module/User/src/",
}
},
然后通过以下方式更新作曲家的自动加载文件:
$ php composer.phar dump-autoload
答案 1 :(得分:0)
好的,解决了。问题是“User \”末尾的逗号(,):“module / User / src /”,在composer.json中