«StandartEdit» и «Работа с БД»: разница между страницами

Материал из GLENN CMS WIKI
(Различия между страницами)
Перейти к навигации Перейти к поиску
Нет описания правки
 
(Новая страница: «Работа с БД организована через класс ormModel (/cms/system/ormModel.php), который расширяет /cms/system/dbModel.php...»)
 
Строка 1: Строка 1:
StandartEdit это схема редактирования стандартных объектов.
Работа с БД организована через класс ormModel (/cms/system/ormModel.php), который расширяет /cms/system/dbModel.php


Например создаём страницу с таблицей, содеращей определённые элементы, стандартная ситуация, не так ли?


Для редактирования каждого элемента создаём кнопку "Редактировать" и в качестве действия  
Если нам надо осуществить какие-то действия с таблицей users, схемы public - инициируем класс


  '''onclick="stEdit(<имя объекта>,<ID объекта>,<контроллер(если не текущий)>, <плагин(если не текущий)>)"'''
  $model = ormModel::init('public','users');


функция JS вызовет переданный [[плагин]], [[контроллер]](если параметры не переданы будут вызваны текущий плагин и контроллер) с [[экшн|экшном]] seeditobject
Чтобы добавить новую записсь - вызываем


* Необходима активация [[Транспорт переменных в среду JavaScript|транспорта переменных в среду JavaScript]]


так как при редактировании у нас вызывается один и тот же экшн то в схему внедрена дополнительная проверка [[права доступа|прав доступа]]
$model->newItem([
для корректной работы нам необходимо добавить [[ресурс контроля прав|ресурс]], выглядящий следующим образом
  'name' => 'Валера',
  'email' => 'valera@yandex.ru'
]);


Ресурс для контроля прав '''<текущий [[плагин]]>/<текущий [[контроллер]]>/seedit<имя объекта>'''
`name и email - поля в таблице users`


Экшн steditobject, находящийся в [[CmsBaseController]] в свою очередь возвращает форму редактирования элемента, которую он берёт из папки
Чтобы обновить запись
   
 
  Шаблон редактирования объекта
$model->updateItem($fields, $where);
  '''/<ПАПКА [[ПЛАГИН|ПЛАГИНА]]>/views/seedit/<имя объекта>.tpl'''
 
$model->updateItem([
    'name'=>'Герман'
], 'id='.(int)$this->params['id']);
 
 
Чтобы получить ячейку
 
$model->s_fetchOne("select name from public.users where id=".(int)$this->params['id'])
 
  или
 
  $model->get("name","id=".(int)$this->params['id']);
 
 
 
Чтобы получить строку
 
  $userData = $model->getRow("id=".(int)$this->params['id']);
 
или
 
$userData = $model->s_fetchRow("select * from users where id=".(int)$this->params['id']);
 
 
Чтобы получить набор строк


перед отрисовкой формы вызывает метод '''segetdata<Имя объекта(первая буква большая)>''' сначала модели, затем контроллера, в случае если они определены
При вызове метода модели, данные, возвращённые методом помещаются в массив $data, доступный в шаблоне редактирования объекта


или принимает данные для редактирования(в случае отправки запроса методом POST).
$users = $model->getAll("name='valera'")


При сохранение данных об объекте вызываются по очереди методы текущего [[контроллер|контроллера]] и его [[модель|модели]] 'seedit<Имя объекта>'(seeditOrg) в случае если они определены.
или
методу модели в качестве аргумента передаётся массив с [[параметры запроса|параметрами запроса]]
$users = $model->s_fetchAll("select * from users where name='valera'");

Версия от 12:47, 13 сентября 2022

Работа с БД организована через класс ormModel (/cms/system/ormModel.php), который расширяет /cms/system/dbModel.php


Если нам надо осуществить какие-то действия с таблицей users, схемы public - инициируем класс

$model = ormModel::init('public','users');

Чтобы добавить новую записсь - вызываем


$model->newItem([
  'name' => 'Валера',
  'email' => 'valera@yandex.ru'
]);

`name и email - поля в таблице users`

Чтобы обновить запись

$model->updateItem($fields, $where);
$model->updateItem([
   'name'=>'Герман'
], 'id='.(int)$this->params['id']);


Чтобы получить ячейку

$model->s_fetchOne("select name from public.users where id=".(int)$this->params['id'])
или
$model->get("name","id=".(int)$this->params['id']);


Чтобы получить строку

$userData = $model->getRow("id=".(int)$this->params['id']);
или
$userData = $model->s_fetchRow("select * from users where id=".(int)$this->params['id']);


Чтобы получить набор строк


$users = $model->getAll("name='valera'")
или

$users = $model->s_fetchAll("select * from users where name='valera'");