«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 - инициируем класс
 
$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']);


'''onclick="seEdit(<имя объекта>,<ID объекта>,<контроллер>, <плагин>)"'''
Параметры:
<имя объекта>: Любое название объекта состоящее из латинских букв '''без пробелов''' ''пример: org''
<ID объекта>: ID объекта - целое число. Также можно передать объект с несколькими параметрами ''пример: {'id': 2, 'parent': 4}''
<контроллер>: (ОПЦИОНАЛЬНО) если передан этот параметр то метод редактирования будет вызван в переданном, контроллере
<плагин>: (ОПЦИОНАЛЬНО) если передан этот параметр то метод редактирования будет вызван в переданном, контроллере


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


* Для работы, необходима активация [[Транспорт переменных в среду JavaScript|транспорта переменных в среду JavaScript]]
Чтобы получить строку


так как при редактировании у нас вызывается один и тот же экшн то в схему внедрена дополнительная проверка [[права доступа|прав доступа]]
$userData = $model->getRow("id=".(int)$this->params['id']);
для корректной работы нам необходимо добавить [[ресурс контроля прав|ресурс]], выглядящий следующим образом


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


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


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


object - тип объекта
Чтобы получить набор строк
objectid - его ID (второй аргумент js функции seEdit)




или принимает данные для редактирования(в случае отправки запроса методом 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'");