Реализация простого плагина: различия между версиями
V0yager (обсуждение | вклад) (Новая страница: «создадим к примеру плагин job создадим для него папку /site/plugins/job создадим IndexController для от…») |
V0yager (обсуждение | вклад) Нет описания правки |
||
Строка 10: | Строка 10: | ||
class Job_IndexController extends SiteBaseController { | class Job_IndexController extends SiteBaseController { | ||
} | } | ||
Строка 18: | Строка 17: | ||
class Job_IndexController extends SiteBaseController { | class Job_IndexController extends SiteBaseController { | ||
function indexAction() { | function indexAction() { | ||
Строка 29: | Строка 27: | ||
class Job_IndexController extends SiteBaseController { | class Job_IndexController extends SiteBaseController { | ||
function indexAction() { | function indexAction() { | ||
$x = 2; | $x = 2; | ||
Строка 46: | Строка 43: | ||
т.е. в нашем случае это будет /site/plugins/job/views/content/index/index.tpl | т.е. в нашем случае это будет /site/plugins/job/views/content/index/index.tpl | ||
job в пути это имя плагина | job в пути это имя плагина | ||
index - имя контроллера | index - имя контроллера | ||
index - имя экшна | index - имя экшна |
Версия от 15:06, 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'); } }