2011-09-22 4 views
0

저는 응용 프로그램을 작성 중이며 대부분의 코드는 앞으로의 프로젝트에서 반환 될 것입니다. 그래서 내 생각은 이와 같은 구조를 만드는 것이 었습니다 :CakePHP 컨트롤러 확장 및 메서드 재정의

App/ 
- controllers 
- models 
- ... 
Cake/ 
My_Custom_Folder/ 
- controllers 
- models 
- .. 

는 기본적으로 나는 일반 응용 프로그램 폴더 옆에 다른 폴더를 추가 할 및 응용 프로그램이 :: 빌드() 별도의 폴더 컨트롤러의 경로를 설정하는 데 사용, 모델 등.

목표는 내 프로젝트에서 맞춤 작업이 필요한 경우에만 앱 레이어를 사용하는 것입니다. 성공했고 CakePHP는 App에있는 컨트롤러를 My_Custom_Folder의 컨트롤러보다 많이 사용합니다.

예 : My_Custom_Folder에 pages_controller.php가 있고 내 App 폴더에 pages_controller.php가 있고 App 폴더에있는 pages_controller.php를 사용합니다. App 폴더에 아무 것도 없으면 My_Custom_Folder에있는 것을 사용합니다.

그러나 내가 원하는 방법은 아닙니다. My_Custom_Folder에서 컨트롤러를 확장하여 메서드를 재정의하거나 새 메서드를 추가 할 수 있습니다. 불행하게도이 작동하지 않습니다 그것을

/My_Custom_Folder/pages_controller.php

Class PagesController Extends AppController { 

    Public $name = 'Pages'; 

    Public Function home(){ 
     echo 'default home'; 
    } 
} 

/App/pages_controller.php

require_once(ROOT . DS . 'My_Custom_Folder' . DS . 'controllers' . DS . 'pages_controller.php'); 

Class AppPagesController Extends PagesController { 

    Public Function home(){ 
     echo 'Override default home'; 
    } 
} 

:

지금까지 나는 다음을 시도 여전히 기본 홈을로드합니다. 기본적으로 내가 원하는 것은 My_Custom_Folder에서 모든 메서드를로드하고 App 폴더가 메서드를 재정의하고/또는 Appcontroller를 확장하여 동일한 방식으로 메서드를 추가 할 수있게하는 것입니다. 두 파일을 모두로드하지만 모든 함수를 대체하지는 않습니다.

많은 프로젝트에서 동일한 코드를 유지하고 My_Custom_Folder를 업데이트하여 모든 프로젝트에 새로운 기능을 쉽게 추가 할 수 있으며 일부 사용자 정의 코드가있는 프로젝트가 중단되지 않는 구조가 좋습니다.

이 문제에 대한 도움을 주시면 대단히 감사하겠습니다.

+0

여전히 해결책은 발견되지 않았습니다. 플러그인 또는 동작은 옵션이 아닙니다. –

답변

0

플러그인이나 동작, 구성 요소 또는 도우미를 살펴보십시오. 플러그인을 사용하면 My_Custom_Folder와 마찬가지로 모든 앱에 공통된 폴더에 넣을 수 있습니다.