2014-11-12 6 views
1

다중 모듈 응용 프로그램을 설치하고 있는데, 지금까지 예제로 http://docs.phalconphp.com/en/latest/reference/applications.html과 같이 설정했습니다.모듈 간 공유베이스 컨트롤러

하지만 백엔드 컨트롤러와 프런트 엔드 컨트롤러가 모두 공유되는 기본 컨트롤러를 공유 할 수 있다면 방황하고있었습니다. 이것은 기본 컨트롤러에 단일 ACL을 가질 수 있기 때문입니다. 내가 어떻게 그걸 정 하겠니?

문서에 따르면 어디서나 컨트롤러베이스를 만들 수 있으며이 파일을 부트 스트랩 파일에 직접 저장하거나 오토로더를 사용하여로드해야합니다. 그래서 apps/shared/controllers/ControllerBase.php라는 폴더를 만들었고이 파일을 부트 스트랩 파일에 직접 넣어야했지만 작동하지 않습니다.

내가 지금 같은 컨트롤러를로드 할 경우

class AdminController extends ControllerBase 
{ 

     public function indexAction() 
     { 
      echo "<h1>Hello admin!</h1>"; 
     } 
    } 

내가 오류를 ... 백엔드 \ 컨트롤러 ControllerBase을 \ '에서 찾을 수 없습니다 ......

을 어떻게 할 문서 당 오토로더를 사용하여로드해야합니까? 그것을 자체 네임 스페이스 또는 다른 것으로 등록해야합니까?

+0

여기서 'AdminController'는 어디에 있고'AdminController'의 네임 스페이스는 무엇입니까? – alu

+0

파일을 부트 스트랩에 포함 시켰다고 말하면 파일을 직접 포함 하시겠습니까? 아니면 자동로드를위한 구성 섹션에 디렉토리 위치를 제공합니까? – JackB

+0

require를 사용하여 부트 스트랩에 파일을 직접 포함시킵니다. 나중에 파일 구조를 올리면 도움이 될만한 집에 도착하면 나중에 게시하십시오. – user794846

답변

1

오토로더가 기본 클래스의 전체 네임 스페이스 경로를 사용하지 않으므로 자동 로더가 하위 클래스의 동일한 네임 스페이스에서 해당 네임 스페이스를 찾으려고 시도합니다. 이 같은

시도 뭔가 :

namespace MyApp\Backend\Controllers; 

use MyApp\Shared\Controllers\ControllerBase; 

class AdminController extends ControllerBase 
{ 
    public function indexAction() 
    { 
     echo "<h1>Hello admin!</h1>"; 
    } 
} 

이 답변은 당신이 제대로 PSR-0 and PSR-4를 적용한 것을 고려하십시오.

+0

아니요, 여전히 찾을 수 없습니다. 컨트롤러베이스가 Core \ Controllers \ ControllerBase입니다. 다른 모듈의 컨트롤러는 Modules \ Contact \ Controllers \ IndexController입니다. 이미 \ Core \ Controllers \ ControllerBase를 확장했지만 여전히 오류가 없습니다. – vee