CakePHP Расширяющие контроллеры и переопределяющие методы - PullRequest
0 голосов
/ 23 сентября 2011

Я работаю над Приложением, и большая часть кода будет возвращена в будущем проекте.Поэтому моя идея состояла в том, чтобы создать такую ​​структуру:

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

По сути, я хочу добавить еще одну папку рядом с обычной папкой приложения и использовать App :: build (), чтобы задать пути к дополнительной папке.контроллеры, модели и т. д.

Теперь цель состоит в том, чтобы использовать слой приложения только тогда, когда мой проект требует пользовательской работы, мне это удалось, и CakePHP использует контроллеры в приложении над контроллерами в My_Custom_Folder, если онитам.

Например: если у меня есть файл pages_controller.php в My_Custom_Folder и один в моей папке приложения, он будет использовать тот, что в папке приложения.Если в папке приложения его нет, он использует тот, что находится в 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и это не нарушило бы проекты, которые имеют некоторый настроенный код.

Любая помощь по этому вопросу будет принята с благодарностью.

1 Ответ

0 голосов
/ 23 сентября 2011

Посмотрите на плагин или поведение, компоненты или помощники.С помощью плагинов вы можете поместить их в одну общую папку для всех приложений (как ваш My_Custom_Folder).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...