젠드 프레임 워크를 처음 사용한다고해서 시작하겠습니다. 나는 ZF2를 사용하여 API를 만들려고 노력하고 있는데,이 작업을 수행하려면 리소스를 그룹화 할 수있는 구조를 설정하려고합니다. 내가 그룹 것에 그러나 "양말 서랍"접근 방식의 큰 팬이 아니다, 그리고 같은ZF2 모듈에서 여러 하위 폴더/네임 스페이스를 얻을 수있는 방법
ModuleA
->src
->ModuleA
->Controller
->Entity
: 거의 모든 내가 겪은 예제에서, 나는 사람들이 표준 설정을 사용하는 것이 보았다.
각 컨트롤러 및 법인 폴더는 자신의 컨트롤러 및 엔티티 클래스의있다 : 이것은 내가 달성하기 위해 노력하고 있습니다 것입니다. Module.php에서 나는과 같이 자동로드에 서로 다른 네임 스페이스를 추가하고 :
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 오류가 계속 표시됩니다. 내가 곧 정상 궤도에 오전 하더군요
Multiple namespaces under same module in ZF2
을하지만, 내 길을 찾을 수없는 이유는 확실하지 않다 :이 게시물 겪었어요.
아, 그건 분명히 놓친 것입니다. 그러나 그것이 효과가 없었던 이유는 아닙니다. 다른 사람이 동일한 설정/문제를 가지고 있다면 내 질문에 대답했습니다. –