Користувальницькькі налаштування

Налаштування сайту


nyanorm

Розбіжності

Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.

Посилання на цей список змін

Порівняння попередніх версій Попередня ревізія
Наступна ревізія
Попередня ревізія
nyanorm [2023/06/16 13:29]
nightfly [Створення та зміна записів]
nyanorm [2023/06/16 13:46] (поточний)
nightfly [Що ще?]
Рядок 203: Рядок 203:
  
  
-===== Включение режима отладки ===== +===== Увімкнення режиму відлагодження ===== 
-Мы знаем. Вы привыкли использовать для отладки ваших модулей всякие print_r/debarr. Все, отвыкаем. Теперь можно легко и непринужденно включить режим отладки или глубокой отладки и получить нормальный лог и вывод всего происходящего с моделью.+ 
 +Ми знаємо. Ви звикли використовувати для налагодження ваших модулів усілякі print_r/debarr. Усе, відвикаємо. Тепер можна легко і невимушено увімкнути режим налагодження або глибокого налагодження і отримати нормальний лог і виведення всьогощо відбувається з моделлю.
  
 <code php> <code php>
Рядок 210: Рядок 211:
 </code> </code>
  
-Все, теперь все запросы к БД будут выводиться прямо в ваш умолчательный вью, а также записываться вместе с временем в лог, который вы сможете смотреть реалтайм методом+Усе, тепер усі запити до БД виводитимуться прямо у ваш стандартний в'ю, а також записуватимуться разом із часом у дебаг-лог, який ви зможете дивитися реалтайм методом
  
 <code bash> <code bash>
Рядок 216: Рядок 217:
 </code> </code>
  
-Также вам может захотеться врубить режим глубокой отладки. Тогда в этот же лог, будет дампиться также состояние всей модели целиком на каждый чих. Делается это так:+Також вам може захотітися врубити режим глибокого відлагодження. Тоді в цей же лог, буде дампитися також стан всієї моделі цілком на кожен пчих. Робиться це так:
 <code php> <code php>
 $model->setDebug(true,true); $model->setDebug(true,true);
 </code> </code>
  
-===== О исключениях ===== +===== Про виключення =====
-Если вы совсем обнаглеете от вседозволенности NyanORM вам в лицо могут быть выброшены следующие исключения: +
-  * **MEOW_WHERE_STRUCT_EMPTY** - кумулятивная структура where пуста. А она нужна. Очень. +
-  * **MEOW_DATA_STRUCT_EMPTY** - кумулятивная структура data пуста. И она тоже кому-то очень нужна. +
-  * **MEOW_JOIN_WRONG_TYPE** - неверный тип JOIN. Допустимы только INNER, LEFT, RIGHT. +
-  * **MEOW_NO_FIELD_NAME** - не установлено обязательное имя поля.+
  
-===== Принципиальная схема ===== +Якщо ви зовсім знахабнієте від вседозволеності NyanORM вам в обличчя можуть бути викинуті такі винятки: 
-Это гдео вот настолько высокоуровневая штука.+ 
 +  * **MEOW_WHERE_STRUCT_EMPTY** - кумулятивна структура where порожня. А вона потрібна. Дуже. 
 +  * **MEOW_DATA_STRUCT_EMPTY** - кумулятивна структура data порожня. І вона теж комусь дуже потрібна. 
 +  * **MEOW_JOIN_WRONG_TYPE** - неправильний тип JOIN. Допустимі тільки INNER, LEFT, RIGHT. 
 +  * **MEOW_NO_FIELD_NAME** - не встановлено обов'язкове ім'я поля. 
 + 
 +===== Принципова схема ===== 
 + 
 +Це десь ось настільки високорівнева штука.
  
 {{:nyanorm_scheme0.png?|}} {{:nyanorm_scheme0.png?|}}
  
-Так что да, в модулях где скорость работы с данными может быть узким местом, возможно придется использовать более традиционный подход с использованием api.mysql. 
  
-===== Что еще? ===== +Тож так, у модулях, де швидкість роботи з даними може бути вузьким місцем, можливо, доведеться використовувати більш традиційний підхід із використанням api.mysql. 
-Короче вот пока что вам практические примеры использования этого в виде хеллоуворлда. Но так как я хеллоуворлды писать не умею, вот вам тудушка. Как говорят умные люди - не умеешь писать хеллоуворлды - пиши тудушки.+===== Що ще? ===== 
 + 
 +Коротше ось поки що вам практичні приклади використання цього у вигляді хеллоуворлда. Але оскільки я хеллоуворлди писати не вмію, ось вам тудушка. Як кажуть розумні люди - не вмієш писати хеллоуворлди - пиши тудушки. 
 + 
 + 
 +Працювати наш TODO-list буде на наступній табличці в БД:
  
-Работать наш TODO-list будет на следующей табличке в БД: 
 <code sql> <code sql>
 CREATE TABLE IF NOT EXISTS `todo` ( CREATE TABLE IF NOT EXISTS `todo` (
Рядок 247: Рядок 254:
 </code> </code>
  
-А вот и весь код нашего модуля:+А ось і весь код нашого модуля:
 <code php> <code php>
  
-$todo = new nya_todo(); // Создаем модель данных при помощи магии.  +$todo = new nya_todo(); //Створюємо модель даних за допомогою магії.  
-                       //Собственно todo после префикса nya_ это и есть наша табличка.+                       //Власне todo після префікса nya_ це і є наша табличка.
  
-$moduleBaseUrl = '?module=testing'; //базовый URL нашего модуля +$moduleBaseUrl = '?module=testing'; //базовий URL нашого модулю 
-$messages = new UbillingMessageHelper(); //хотим штатные красивые уведомления+$messages = new UbillingMessageHelper(); //хочемо штатні красиві повідомлення
 $result = ''; $result = '';
  
-//Рендерим формочку создания используя инлайновую сборку при помощи Astral.+//Рендеримо формочку створення, використовуючи інлайнову збірку за допомогою [[apiastral|Astral]].
 $inputs = wf_TextInput('newtasktext', __('Task'), '', false, 40); $inputs = wf_TextInput('newtasktext', __('Task'), '', false, 40);
 $inputs .= wf_Submit(__('Create')); $inputs .= wf_Submit(__('Create'));
Рядок 263: Рядок 270:
 show_window(__('Create new task'), $creationForm); show_window(__('Create new task'), $creationForm);
  
-//Ловим непустой newtasktext как сигнал для создания новой записи+//Ловимо непорожній newtasktext як сигнал для створення нового запису
 if (ubRouting::checkPost(array('newtasktext'))) { if (ubRouting::checkPost(array('newtasktext'))) {
-    //заполняем новыми данными структуру data предварительно отфильтровав их средствами ubRouting+    //заповнюємо новими даними структуру dataпопередньо відфільтрувавши їх засобами ubRouting
     $todo->data('text', ubRouting::post('newtasktext', 'mres'));     $todo->data('text', ubRouting::post('newtasktext', 'mres'));
-    $todo->create(); //говорим модели что "создайся запись" на основании структуры выше. +    $todo->create(); //кажемо моделі що "створи запис" на підставі структури вище. 
-    ubRouting::nav($moduleBaseUrl); //возвращаемся в морду модуля+    ubRouting::nav($moduleBaseUrl); //повертаємось у морду модуля
 } }
  
-//Ловим запрос на удаление тудушки, на сей раз GET-ом.+//Ловимо запит на видалення тудушки, цього разу GET-ом.
 if (ubRouting::checkGet('deletetodo')) { if (ubRouting::checkGet('deletetodo')) {
-    //выставляем параметр where в удаляемую id, предварительно убедившись, что это будет циферка+    //виставляємо параметр where у id, котра видаляється, попередньо переконавшись, що це буде циферка
     $todo->where('id', '=', ubRouting::get('deletetodo', 'int'));     $todo->where('id', '=', ubRouting::get('deletetodo', 'int'));
-    $todo->delete(); // говорим модели "удались"+    $todo->delete(); //кажемо моделі "вдалися"
     ubRouting::nav($moduleBaseUrl);     ubRouting::nav($moduleBaseUrl);
 } }
  
-//Ловим запрос на изменение существующей записи. Для сигнализации о начале ждем не пустой текст и айдишку.+//Ловимо запит на зміну наявного запису. Для сигналізації про початок чекаємо не порожній текст і айдишку.
 if (ubRouting::checkPost(array('edittodoid', 'edittodotext'))) { if (ubRouting::checkPost(array('edittodoid', 'edittodotext'))) {
-    //Дальше ведь все очевидно, правда? Выставляем где, выставляем чего поменять, фильтруем, говорим "сохранись".+    //Далі ж усе очевидно, правда? Виставляємо де, виставляємо, що поміняти, фільтруємо, говоримо "збережися".
     $todo->where('id', '=', ubRouting::post('edittodoid', 'int'));     $todo->where('id', '=', ubRouting::post('edittodoid', 'int'));
     $todo->data('text', ubRouting::post('edittodotext', 'mres'));     $todo->data('text', ubRouting::post('edittodotext', 'mres'));
Рядок 288: Рядок 295:
 } }
  
-//Показываем существующие задачи которые нам нужно сделать+//Показуємо наявні завдання, які нам потрібно зробити
-$todo->orderBy('id', 'DESC'); //хотим сортировку от свежим к древним +$todo->orderBy('id', 'DESC'); //хочемо сортування від свіжих до древніх 
-$allTodos = $todo->getAll(); //достаем вообще все что видим из модели.+$allTodos = $todo->getAll(); //дістаємо взагалі все, що бачимо з моделі.
  
 if (!empty($allTodos)) { if (!empty($allTodos)) {
Рядок 299: Рядок 306:
         $cells = wf_TableCell($each['text']);         $cells = wf_TableCell($each['text']);
         $actControls = wf_JSAlert($moduleBaseUrl . '&deletetodo=' . $each['id'], web_delete_icon(), $messages->getDeleteAlert());         $actControls = wf_JSAlert($moduleBaseUrl . '&deletetodo=' . $each['id'], web_delete_icon(), $messages->getDeleteAlert());
-        //Прямо тут, собираем формочку редактирования каждой задачи и пихаем ее в контролы.+        //Прямо тут, збираємо формочку редагування кожного завдання і пихаємо її в контроли.
         $editInputs = wf_HiddenInput('edittodoid', $each['id']);         $editInputs = wf_HiddenInput('edittodoid', $each['id']);
         $editInputs .= wf_TextInput('edittodotext', __('Text'), $each['text'], false, 40);         $editInputs .= wf_TextInput('edittodotext', __('Text'), $each['text'], false, 40);
Рядок 305: Рядок 312:
         $editForm = wf_Form('', 'POST', $editInputs, 'glamour');         $editForm = wf_Form('', 'POST', $editInputs, 'glamour');
         $actControls .= wf_modalAuto(web_edit_icon(), __('Edit'), $editForm);         $actControls .= wf_modalAuto(web_edit_icon(), __('Edit'), $editForm);
-        //Фу так делать.+        //Фу так робити.
         $cells .= wf_TableCell($actControls);         $cells .= wf_TableCell($actControls);
         $rows .= wf_TableRow($cells, 'row5');         $rows .= wf_TableRow($cells, 'row5');
nyanorm.1686911358.txt.gz · Востаннє змінено: 2023/06/16 13:29 повз nightfly