«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


Например создаём страницу с таблицей, сожеращей определённые элементы, стандартная ситуация, не так ли?
для редактиорования каждого элемента создаём кнопку "Редактировать" и в качестве действия


'''onclick="stEdit(<имя объекта>,<ID объекта>,<контроллер(если не текущий)>, <плагин(если не текущий)>)"'''
Если нам надо осуществить какие-то действия с таблицей users, схемы public - инициируем класс


функция JS вызовет текущий [[плагин]], [[контроллер]] с [[экшн|экшном]] seeditobject
$model = ormModel::init('public','users');


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


так как при редактировании у нас вызывается один и тот же экшн то в схему внедрена дополнительная проверка [[права доступа|прав доступа]]
для корректной работы нам необходимо добавить [[ресурс контроля прав|ресурс]], выглядящий следующим образом


'''<текущий [[плагин]]>/<текущий [[контроллер]]>/seedit<имя объекта>'''
$model->newItem([
  'name' => 'Валера',
  'email' => 'valera@yandex.ru'
]);


Экшн steditobject, находящийся в [[CmsBaseController]] в свою очередь возвращает форму редактирования элемента, которую он берёт из папки
`name и email - поля в таблице users`


'''/<ПАПКА [[ПЛАГИН|ПЛАГИНА]]>/views/seedit/<имя объекта>.tpl'''
Чтобы обновить запись


или принимает данные для редактирования(в случае отправки запроса методом POST).
$model->updateItem($fields, $where);


При сохранение данных об объекте вызываются по очереди методы текущего [[контроллер|контроллера]] и его [[модель|модели]] 'seedit<Имя объекта>'(seeditOrg) в случае если они определены.
$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'");

Версия от 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'");