【发布时间】:2014-11-05 11:56:17
【问题描述】:
首先让我说我对 Zend 框架比较陌生。我正在尝试使用 ZF2 创建一个 API,为此我正在尝试设置一个允许我对资源进行分组的结构。在我经历的几乎所有示例中,我都看到人们使用标准设置:
ModuleA
->src
->ModuleA
->Controller
->Entity
不过,我不是“袜子抽屉”方法的忠实拥护者,而是喜欢将事物分组。这就是我想要完成的:
每个控制器和实体文件夹都有自己的控制器和实体类。在 Module.php 中,我将不同的命名空间添加到 AutoLoader,如下所示:
public function getAutoloaderConfig()
{
return array(
'Zend\Loader\ClassMapAutoloader' => array(
__DIR__ . '/autoload_classmap.php',
),
'Zend\Loader\StandardAutoloader' => array(
'namespaces' => array(
'User' => __DIR__ . '/src/User',
'Permission' => __DIR__ . '/src/Permission',
'Group' => __DIR__ . '/src/Group',
),
),
);
}
我已经设置了我的 module.config.php,例如:
'controllers' => array(
'invokables' => array(
'Auth\Controller\User' => 'User\Controller\UserController',
'Auth\Controller\Permission' => 'Permission\Controller\PermissionController',
'Auth\Controller\Group' => 'Group\Controller\GroupController',
),
),
'router' => array(
'routes' => array(
'user' => array(
'type' => 'segment',
'options' => array(
'route' => '/user[/:id]',
'constraints' => array(
'id' => '[0-9]+',
),
'defaults' => array(
'controller' => 'Auth\Controller\User',
'action' => 'index',
),
),
),
我的 UserController 看起来像:
<?php
namespace Auth\User\Controller;
use Zend\Mvc\Controller\AbstractRestfulController;
use User\Entity\UserTable;
use Zend\View\Model\JsonModel;
class UserController extends AbstractRestfulController
{
protected $_objectManager;
public function indexAction()
{
$users = $this->getObjectManager()->getRepository('\User\Entity\User')->findAll();
$JSONArray = [];
//Convert to JSON objects
foreach ($users as $entity) {
$JSONArray[] = $entity->getJsonData();
}
return new JsonModel(array('users' => $JSONArray));
}
我已经尝试了很多不同的命名空间案例,但我不断收到 404 not found 错误。我已经浏览了这篇文章:
Multiple namespaces under same module in ZF2
这告诉我我在正确的轨道上,但我不确定为什么找不到我的路径。
【问题讨论】:
标签: php zend-framework2