Инструменты пользователя

Инструменты сайта


lssexampl-03-ref

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
lssexampl-03-ref [2024/07/08 12:09] – [Демонстрационные примеры и ссылки] madminlssexampl-03-ref [2026/04/28 12:48] (текущий) – [Создание контроллеров источников данных] madmin
Строка 94: Строка 94:
 Контроллеры источников данных **DataSource** размещаются в папке **php/datasources**. В подпапке **autogen** размещаются контроллеры, автоматически сформированные по описанию структуры данных, см [[lssexampl-02-datastru]]. Для автоматического формирования этих контроллеров следует использовать экранную форму **Разработка/Структура базы**, вызвав в ней пункт меню **Пересчет/Генератор классов DataSource**. Контроллеры источников данных **DataSource** размещаются в папке **php/datasources**. В подпапке **autogen** размещаются контроллеры, автоматически сформированные по описанию структуры данных, см [[lssexampl-02-datastru]]. Для автоматического формирования этих контроллеров следует использовать экранную форму **Разработка/Структура базы**, вызвав в ней пункт меню **Пересчет/Генератор классов DataSource**.
  
-В корне папки **php/datasources** можно размещать контроллеры, унаследованные от автоматически сформированных, переопределяя заданные там методы и свойства. Для примера, возьмем контроллер для таблицы типов ремонтов **repair**. +В корне папки **php/datasources** можно размещать контроллеры, унаследованные от автоматически сформированных, переопределяя заданные там методы и свойства. 
-Реализуем в нем проверку на уникальность содержимого поля **name**. Эта проверка и так есть - за счет уникального индекса на сервере PostgreSQL, см файл **sql/tables.sql**: +
-<code> +
-alter table "repair" add unique("name") deferrable initially deferred; +
-</code> +
-Эта проверка на уникальность происходит при завершении транзакции, но текст сообщения об ошибке выдается SQL сервером автоматически и может быть непонятен пользователю.+
  
-Добавим проверку на уникальность, цель которой - выдать наглядное сообщение при возникновении ошибки. Вот содержимое файла контроллера источника данных для таблицы **repair**, файл **php/datasources/repair.php**: 
-<code> 
-<?php 
-class DataSource_Repair_Ext extends DataSource_Repair { 
-  /// переопределяем проверку после правки строки 
-  protected function onRowValid(&$row) { 
-    {  // проверка значения поля name на уникальность - для более понятного пользователю сообщения об ошибке 
-    $sql_name=$this->str2Sql($row['name']); 
-    $sql_id=$this->str2Sql($row['id']); 
-    $sql=<<<SQL 
-select count(*) as n 
-from 
- "repair" 
-where 
- "repair".name='{$sql_name}' and 
- "repair".id<>'{$sql_id}' 
-SQL; 
-    $rec=$this->pdoFetch($sql); 
-    if ($rec['n']) throw new Exception("Вид ремонта '{$row['name']}' уже есть"); 
-  } 
-  } 
-} 
-return new DataSource_Repair_Ext(); 
-</code> 
-Обратите внимание: 
-  * класс унаследован от автоматически сформированного контроллера **DataSource_Repair** 
-  * в конце программного кода создается и возвращается экземпляр описанного в файле контроллера **DataSource_Repair_Ext** 
-Сравните, в справочнике **Типы оборудования** проверка на уникальность поля **name** выполняется только средствами SQL сервера, а в справочнике **Виды ремонта** - перед завершением транзакции выполняется реализованная в **DataSource** проверка, и сообщение об ошибке оказывается более понятным. 
 ==== Создание пунктов меню, для вызова экранных форм справочников ==== ==== Создание пунктов меню, для вызова экранных форм справочников ====
 Главное меню проекта описывается в XML файле **php/config/appmenu.xml**. Скорректируем его описателями для вызова экранных форм справочников: Главное меню проекта описывается в XML файле **php/config/appmenu.xml**. Скорректируем его описателями для вызова экранных форм справочников:
Строка 145: Строка 112:
   * описатели, имеющие отношение к системе прав, разберем позже, на соответствующем этапе.   * описатели, имеющие отношение к системе прав, разберем позже, на соответствующем этапе.
 Работу главного меню системы обеспечивает источник данных **systreexmlmenu** расположенный в файле **php/lss-server/datasources/systreexmlmenu.php**. Этот источник задействован в главной экранной форме приложения, расположенной в папке **php/forms/formMain**. Работу главного меню системы обеспечивает источник данных **systreexmlmenu** расположенный в файле **php/lss-server/datasources/systreexmlmenu.php**. Этот источник задействован в главной экранной форме приложения, расположенной в папке **php/forms/formMain**.
- 
-===== Материалы для скачивания ===== 
-Для скачивания материалов необходимо наличие пароля ftp сервера ЦТИ. 
-  * **адрес**: [[ftp://79.170.154.8]] 
-  * **login**: ftpuserlss 
-  * **password**: пароль для доступа к ftp серверу ЦТИ (пароль указан в инструкции по установке ПО LSS) 
-На ftp сервере размещены следующие файлы: 
-  * **lssexample-003.zip** - этап 3 демонстрационного примера; 
-Можно скачать виртуальную машину с развернутым демонстрационным примером: 
-  * [[lssexampl-virtualbox]] 
  
 ===== Демонстрационные примеры и ссылки ===== ===== Демонстрационные примеры и ссылки =====
 Демонстрационные примеры доступны в режиме "**только чтение**". Для входа используйте логин **root**, пароль **1**. Демонстрационные примеры доступны в режиме "**только чтение**". Для входа используйте логин **root**, пароль **1**.
  
-  * демонстрация работы **тестового примера** "Материальные активы" у нас на сайте: [[http://192.168.0.71:4507/storage/example/lss-exampl]]+  * демонстрация работы **тестового примера** "Материальные активы" у нас на сайте: [[https://lss.m-cti.ru/storage/example/lss-exampl]]
  
lssexampl-03-ref.1720429761.txt.gz · Последнее изменение: 2024/07/08 12:09 — madmin

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki