Реализация простого плагина: различия между версиями

Материал из GLENN CMS WIKI
Перейти к навигации Перейти к поиску
(Новая страница: «создадим к примеру плагин job создадим для него папку /site/plugins/job создадим IndexController для от…»)
 
Нет описания правки
Строка 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');
        }
 }