Реализация простого плагина: различия между версиями
V0yager (обсуждение | вклад) Нет описания правки |
V0yager (обсуждение | вклад) Нет описания правки |
||
(не показаны 4 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
==Создание плагина== | |||
===Основные понятия=== | |||
создадим к примеру плагин job | создадим к примеру плагин job | ||
Строка 4: | Строка 6: | ||
/site/plugins/job | /site/plugins/job | ||
создадим IndexController для отображения чего нибудь | создадим [[контроллер]] IndexController для отображения чего нибудь | ||
помещаем его в /site/plugins/job/controllers/IndexController.php | помещаем его в /site/plugins/job/controllers/IndexController.php | ||
Строка 13: | Строка 15: | ||
создадим в нём также indexAction | создадим в нём также [[экшн]] indexAction | ||
Строка 21: | Строка 23: | ||
} | } | ||
===Вывод содержимого на экран=== | |||
Для вывода переменных на экран(в область Smarty) в контроллере есть объект $this->smarty, который является прокладкой между зендом и смарти | |||
Он поддерживает все методы Smarty и реализует некоторые свои | |||
в indexAction делаем все необходимые манипуляции | в indexAction делаем все необходимые манипуляции | ||
Строка 55: | Строка 62: | ||
===Работа с БД=== | ===Работа с БД=== | ||
Работа с БД в плагинах осуществляется через классы моделей | Работа с БД в плагинах осуществляется через классы [[Модель|моделей]] | ||
для инициализации модели используется метод initModel() | для инициализации модели используется метод [[Контроллеры#Полезные методы|initModel()]] | ||
Строка 70: | Строка 77: | ||
сами модели хранятся в папке models, плагина | сами [[Модель|модели]] хранятся в папке models, плагина | ||
в нашем случае это /site/plugins/job/models/jobModel.php | в нашем случае это /site/plugins/job/models/jobModel.php | ||
класс модели обязательно должен быть наследован от [[DbModel]] | класс модели обязательно должен быть наследован от [[Модель|DbModel]] | ||
Текущая версия от 15:16, 6 марта 2013
Создание плагина
Основные понятия
создадим к примеру плагин job
создадим для него папку /site/plugins/job
создадим контроллер IndexController для отображения чего нибудь помещаем его в /site/plugins/job/controllers/IndexController.php
Класс IndexController должен быть объявлен как
class Job_IndexController extends SiteBaseController { }
создадим в нём также экшн indexAction
class Job_IndexController extends SiteBaseController { function indexAction() { } }
Вывод содержимого на экран
Для вывода переменных на экран(в область Smarty) в контроллере есть объект $this->smarty, который является прокладкой между зендом и смарти Он поддерживает все методы Smarty и реализует некоторые свои
в indexAction делаем все необходимые манипуляции
class Job_IndexController extends SiteBaseController { function indexAction() { $x = 2; $y = 2; $this->view->z = $x*$y; /////// передаём переменную Z в область smarty } }
у текущего скина в области контента вызывается функция site::getContent()
которая автоматом подгружает TPL
с контентом
т.е. в нашем случае это будет /site/plugins/job/views/content/index/index.tpl job в пути это имя плагина index - имя контроллера index - имя экшна
создаём файл /site/plugins/job/views/content/index/index.tpl
и пишем в нём: {$z}
Вуаля! при входе на страницу /job/index/index мы увидим "4" в области контента
Работа с БД
Работа с БД в плагинах осуществляется через классы моделей
для инициализации модели используется метод initModel()
class Job_IndexController extends SiteBaseController { function initModel() { $this->model = new jobModel(); } function indexAction() { $this->view->z = $this->model->getZ(); /////// передаём переменную Z в область smarty } }
сами модели хранятся в папке models, плагина
в нашем случае это /site/plugins/job/models/jobModel.php
класс модели обязательно должен быть наследован от DbModel
class jobModel extends DbModel { function getZ(){ return $this->s_fetchOne('select Z from X'); } }