저는 응용 프로그램을 작성 중이며 대부분의 코드는 앞으로의 프로젝트에서 반환 될 것입니다. 그래서 내 생각은 이와 같은 구조를 만드는 것이 었습니다 :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를 업데이트하여 모든 프로젝트에 새로운 기능을 쉽게 추가 할 수 있으며 일부 사용자 정의 코드가있는 프로젝트가 중단되지 않는 구조가 좋습니다.
이 문제에 대한 도움을 주시면 대단히 감사하겠습니다.
여전히 해결책은 발견되지 않았습니다. 플러그인 또는 동작은 옵션이 아닙니다. –