Реализация простого плагина: различия между версиями
V0yager (обсуждение | вклад) Нет описания правки |
V0yager (обсуждение | вклад) Нет описания правки |
||
Строка 55: | Строка 55: | ||
===Работа с БД=== | ===Работа с БД=== | ||
Работа с БД в плагинах осуществляется через классы моделей | Работа с БД в плагинах осуществляется через классы [[Модель|моделей]] | ||
для инициализации модели используется метод initModel() | для инициализации модели используется метод [[Контроллеры#Полезные методы|initModel()]] | ||
Строка 70: | Строка 70: | ||
сами модели хранятся в папке models, плагина | сами [[Модель|модели]] хранятся в папке models, плагина | ||
в нашем случае это /site/plugins/job/models/jobModel.php | в нашем случае это /site/plugins/job/models/jobModel.php | ||
класс модели обязательно должен быть наследован от [[DbModel]] | класс модели обязательно должен быть наследован от [[Модель|DbModel]] | ||
Версия от 15:10, 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() { } }
в 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'); } }