CakePHP - Структура плагина или как создать свой первый плагин

В последнее время мне все больше и плотнее приходится работать с фреймворком cakePHP. И с каждым разом он не перестает удивлять своей замечательной подборкой модулей и возможностью расширений.

В этот раз меня привлекло использование плагинов, которые достаточно универсальны и просты в написании и использовании. И что самое главное - плагин может использоваться многократно в разных проектах. Можно сказать что это и есть удобство хранения и переноса ваших модулей.

Использовать плагины можно в различных комбинациях. Плагин - это как мини-приложение в вашем проекте. Он связан с ним только конфигурационными файлами - соединение с БД database.ctp и настройка роутов routers.ctp, которые при желании можно же конечно переопределить в самом плагине .. ;) Вот примерно такая типовая структура будет у всех плагинов, за исключением ненужных модулей.

В состав пакета плагина также входить могут и контроллеры, и компоненты, хелперы, представления и другие элементы. Все выше перечисленные элементы будут храниться в этой папке, папке плагина, и обязательно иметь два дополнительных файла, расширяющих возможности использования общих строк кода для контроллеров и моделей, соответственно AppController и AppModel.

Базовая структура плагина

  • app/
    • plugins/
      • example/
        • controllers/
          • components/
          • manage_example_controller.php
        • models/
          • behaviors/
          • datasources/
          • example.php
      • views/
        • elements/
        • element.ctp
      • helpers/
      • layouts/
      • manage_example/
        • display.ctp
    • example_app_controller.php
    • example_app_model.php
  • Именование и размещение

    Очень важный момент - это как назвать файлы. Для структуры плагина определены четкие правила в именовании файлов для предотвращения возникновения конфликтных ситуаций в приложении.

    Для того, чтобы подключить плагин в свое приложение, его достаточно положить в специальную папку /app/plugins. CakePHP автоматически просматривая папки при загрузке подключит ваш плагин к приложению. Тогда expample и будет названием вашего плагина.  Желательно, для вашего же удобства(!) придерживаться этого названия при создании файлов и программного кода в них, и даже таблиц, если таковые Вы собираетесь использовать.

    Плагин App Controller и App Model

    Для того чтобы определять настройки, которые вы обычно делаете в app_controller.php и app_model.php в плагине используються специальные файлы example_app_controller.php и example_app_model.php

    • Файл - plugin_app_controller.php
    • Класс - PluginAppController
    • Родительский класс - AppController
    class ExampleAppController extends AppController {
    /*
    * необходимый код, что для контроллера плагина
    */
    }
    
    • Файл - plugin_app_model.php
    • Класс - PluginAppModel
    • Родительский класс - AppModel
    class ExampleApModel extends AppModel {
    /*
    * необходимый код, что для модели плагина
    */
    }
    

    Использование из приложения: router, models, element, link и другое

    Чтобы обратиться к плагину, достаточно пройти по ссылке вида

    /*
    * определение ссылки методом cakePHP
    */
    echo $html->link('Plugin Example', array( 'plugin' => 'example', 'controller' => 'manage_ example', 'action' => 'display', ));
    Поделиться @

    Пока нет коментариев. Будьте первым!