Cake PHP позволяет вам создавать комбинации контроллеров, моделей и отображений и выпускать их как объеденные в пакет плагины приложения, чтобы другие могли использовать их в своих приложениях. У вас есть приятный модуль управления, простой блог или модуль веб-сервиса в одном вашем приложении? Упакуйте это все как плагин Cake PHP и вы сможете использовать его в других приложениях.
Главная связь между плагинами и приложениями это то, что плагины должны быть установлены в настройки приложения (соединение с базой данных и т.п.). Иначе, он работает в своем маленьком пространстве, ведя себя будто бы он самостоятельное приложение.
В то время как определение App Controller и App Model обычно не обязательно, определение их для плагина – обязательно. Вам придется создать их перед тем как плагин заработает. Эти два специальных класса названы после плагина, и расширяют родительские App Controller и App Model. Вот как они должны выглядеть:
AppController плагина: /app/plugins/pizza_app_controller.php<?php
class PizzaAppController extends AppController{
//...}?>AppModel плагина Pizza: /app/plugins/pizza_app_model.php
<?php
class PizzaAppModel extends AppModel
{
//...
}
?>
Если вы забудете определить специальные классы, Cake PHP будет выдавать вам ошибку Missing Controller до тех пор, пока проблема не будет решена.
Это не обязательно, но очень рекомендуем выбирать имена для контроллеров как можно уникальнее, чтобы избежать возможности совпадения имен с существующими родительскими контроллерами. Если вы не уверены совпадает ли выбранное вами имя с существующими, рекомендуем использовать имя плагина перед названием контроллера. В нашем примере можно использовать PizzaOrdersController.
Итак мы помещаем наш новый Pizza Orders Controller в /app/plugins/pizza/controllers и выглядит он так:
/app/plugins/pizza/controllers/pizza_orders_controller.php<?php
class PizzaOrdersController extends PizzaAppController{ var
$name = 'PizzaOrders'; function
index() {
//...
} function
placeOrder() {
//...
}}
?>
Заметьте как этот контроллер расширяет Appcontroller плагина (называемый Pizza App Controller) в отличии от просто родительского App Controller приложения
Модели для плагинов хранятся в /app/plugins/pizza/models. Мы уже определили Pizza Orders Controller для этого плагина, так что давайте создадим модель для этого контроллера, под названием Pazza Orders (имя класса Pizza Orders соответсвует нашей схеме присвоения имен и является достаточно уникальным, поэтому мы оставим его как есть).
/app/plugins/pizza/models/pizza_order.php<?php
class PizzaOrder extends PizzaAppModel{ var
$name = 'PizzaOrder';}
?>
Снова, отметьте что этот класс расширяет Pizza App Model больше чем App Model.
Раз плагин уже установлен в /app/plugins, вы можете получить к нему доступ через ссылку /pluginname/controllername/action. В нашем плагине заказа пиццы, мы получаем доступ к нашему Pizza Orders Controller в /pizza/pizzaOrders.
Несколько последних советов по работе с плагинами в ваших приложениях Cake PHP: