Разработка:modlibs/templater — различия между версиями

Материал из DOF
Перейти к: навигация, поиск
(Заготовка для примера исходных данных)
(Добавлена структура данных для экспорта)
Строка 23: Строка 23:
 
Данные для экспорта будут выглядеть следующим образом:
 
Данные для экспорта будут выглядеть следующим образом:
 
<code php>
 
<code php>
      
+
     // создаем объект для данных
 +
    $export = new Object;
 +
    // создаем массив для информации по классам
 +
    $export->classes = Array();
 +
      // вводим информацию о первом классе
 +
      $class1 = new Object();
 +
      $class1->name      = '7б';// название класса
 +
      $class1->date      = '21.01.09'; // сегодняшнее число
 +
      $class1->teacherfio = 'Пучкова Валентина Федоровна'; // Классный руководитель
 +
      $class1->addinfo    = 'Профильное изучение английского'; //дополнительная информация
 +
      // в класе есть ученики - создаем вложенный массив объектов
 +
      $class1->students = Array();
 +
          // описываем ученика
 +
          $student1 = new Object;
 +
          $student1->number = 1; // порядковый номер в журнале
 +
          $student1->fio = 'Замеладский Алексей'; // фамилия и имя
 +
          $student1->grade = '5'; // оценка за урок
 +
      // помещаем ученика в класс
 +
      $class1->students[] = $student1;
 +
          // описываем ученика
 +
          $student2 = new Object;
 +
          $student2->number = 2; // порядковый номер в журнале
 +
          $student2->fio = 'Гусева Татьяна';// фамилия и имя
 +
          $student2->grade = '4'; // оценка за урок
 +
      // помещаем ученика в класс
 +
      $class1->students[] = $student2;
 +
    // помещаем информацию о первом классе
 +
    $export->classes[] = $class1;
 +
    // вводим информацию о первом классе
 +
        $class2 = new Object();
 +
        $class2->name      = '4б';// название класса
 +
        $class2->date      = '21.01.09'; // сегодняшнее число
 +
        $class2->teacherfio = 'Страпинский Лев Зиновьевич'; // Классный руководитель
 +
        $class2->addinfo    = 'Углубленное изучение математики'; //дополнительная информация
 +
        // в класе есть ученики - создаем вложенный массив объектов
 +
        $class2->students = Array();
 +
            // описываем ученика
 +
            $student1 = new Object;
 +
            $student1->number = 1; // порядковый номер в журнале
 +
            $student1->fio = 'Коньков Сергей'; // фамилия и имя
 +
            $student1->grade = '5'; // оценка за урок
 +
        // помещаем ученика в класс
 +
        $class2->students[] = $student1;
 +
            // описываем ученика
 +
            $student2 = new Object;
 +
            $student2->number = 2; // порядковый номер в журнале
 +
            $student2->fio = 'Захаров Александр';// фамилия и имя
 +
            $student2->grade = '3'; // оценка за урок
 +
        // помещаем ученика в класс
 +
        $class2->students[] = $student2;
 +
    // помещаем информацию о втором классе
 +
    $export->classes[] = $class2;
 
</code php>
 
</code php>
 
== Тип документа ==
 
== Тип документа ==

Версия 15:40, 22 мая 2009

Плагин
Название templater
Тип modlibs


Общие сведения

Плагин templater отвечает за все действия по экспорту данных и за создание любых электронных документов (отчетов, приказов, графиков и т. п.)

Принцип работы

Все документы формируются следующим образом: на основе требуемого документа создается файл шаблона документа;

  • собираются данные для вставки в шаблон
  • формируется экспортируемый документ - производится вставка данных в шаблон;
  • сформированный документ посылается клиенту по http-протоколу.

Шаблон документа формируется из документа по специальным правилам, а затем размещается в оговоренном месте плагина, из которого производится экспорт. Затем по аналогичным правилам производится вставка данных. Сбор и подготовка данных для экспорта производятся тем же плагином. В настоящее время формирование шаблона производится в ручную. Описываемый модуль получает путь к каталогу документа, данные для вставки и формат документа. На основе этих данных он формирует документ и посылает его клиенту.

Формат исходных данных

Данные, предназначенные для экспорта должны соответствовать следующим стандартам:

  • Исходные данные всегда представлены в виде объекта класса stdClass (стандартный объект PHP).
  • Поля объекта могут содержать строки, числа и массивы объектов (массивы строк или чисел не допускаются). Данные других типов не обрабатываются.

Строки и числа подставляются в шаблон документа "как есть", объекты обрабатываются как блоки. Объект данных для экспорта может иметь неограниченное количество вложенных блоков. Желательно для создания объекта данных для экспорта создавать отдельный класс, которые решает эту задачу.

Пример исходных данных

В этом примере мы построим объект для экспорта данных по ученикам двух классов. Данные для экспорта будут выглядеть следующим образом:

   // создаем объект для данных
   $export = new Object;
   // создаем массив для информации по классам
   $export->classes = Array();
      // вводим информацию о первом классе
      $class1 = new Object();
      $class1->name       = '7б';// название класса
      $class1->date       = '21.01.09'; // сегодняшнее число
      $class1->teacherfio = 'Пучкова Валентина Федоровна'; // Классный руководитель 
      $class1->addinfo    = 'Профильное изучение английского'; //дополнительная информация
      // в класе есть ученики - создаем вложенный массив объектов
      $class1->students = Array();
          // описываем ученика
          $student1 = new Object;
          $student1->number = 1; // порядковый номер в журнале
          $student1->fio = 'Замеладский Алексей'; // фамилия и имя
          $student1->grade = '5'; // оценка за урок
      // помещаем ученика в класс
      $class1->students[] = $student1;
          // описываем ученика
          $student2 = new Object;
          $student2->number = 2; // порядковый номер в журнале
          $student2->fio = 'Гусева Татьяна';// фамилия и имя
          $student2->grade = '4'; // оценка за урок
      // помещаем ученика в класс
      $class1->students[] = $student2;
   // помещаем информацию о первом классе
   $export->classes[] = $class1;
   // вводим информацию о первом классе
       $class2 = new Object();
       $class2->name       = '4б';// название класса
       $class2->date       = '21.01.09'; // сегодняшнее число
       $class2->teacherfio = 'Страпинский Лев Зиновьевич'; // Классный руководитель 
       $class2->addinfo    = 'Углубленное изучение математики'; //дополнительная информация
       // в класе есть ученики - создаем вложенный массив объектов
       $class2->students = Array();
           // описываем ученика
           $student1 = new Object;
           $student1->number = 1; // порядковый номер в журнале
           $student1->fio = 'Коньков Сергей'; // фамилия и имя
           $student1->grade = '5'; // оценка за урок
       // помещаем ученика в класс
       $class2->students[] = $student1;
           // описываем ученика
           $student2 = new Object;
           $student2->number = 2; // порядковый номер в журнале
           $student2->fio = 'Захаров Александр';// фамилия и имя
           $student2->grade = '3'; // оценка за урок
       // помещаем ученика в класс
       $class2->students[] = $student2;
   // помещаем информацию о втором классе
   $export->classes[] = $class2;

Тип документа

Форматы экспорта

Использование готового документа

Создание типа документа

Простое

Возможности по настройке поведения

Создание формата

API плагина

Форматы экспорта

ODF

Ссылки