Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
abills:docs:development:manual:ru [2018/01/14 19:29] anton [Работа с БД] |
abills:docs:development:manual:ru [2019/02/21 10:57] (текущий) andriy [Основная часть модуля - вебинтерфейс] |
||
---|---|---|---|
Строка 36: | Строка 36: | ||
|%FORM |хеш-масив значений переданных на страницу (GET или POST запросом) | | |%FORM |хеш-масив значений переданных на страницу (GET или POST запросом) | | ||
|$html |Обьект визуализации (экземпляр класса ''Abills::HTML'') | | |$html |Обьект визуализации (экземпляр класса ''Abills::HTML'') | | ||
- | |$users |Менеджер работы с пользователями (экземпляр класса ''Users'') | | + | |$users |Менеджер работы с пользователями (экземпляр класса ''Users''). **Использовать только в функциях админ. интерфейса.** | |
|$db |Соединение с БД | | |$db |Соединение с БД | | ||
|$admin |Менеджер работы с администраторами (экземпляр класса ''Admins'')| | |$admin |Менеджер работы с администраторами (экземпляр класса ''Admins'')| | ||
Строка 238: | Строка 238: | ||
Использование этого ключа связано с системой шаблонов, по утверждённому стандарту, названия столбцом таблицы указываются в __lowercase__, а переменные шаблона указываются в __UPPERCASE__. Таким образом, для передачи данных из БД в шаблон, пришлось бы вручную переназначать переменные при передаче в шаблон. Ключ ''COLS_UPPER'' дублирует ключи в хеше в в виде UPPERCASE, что позволяет передавать строки результата в шаблон без дополнительной логики. | Использование этого ключа связано с системой шаблонов, по утверждённому стандарту, названия столбцом таблицы указываются в __lowercase__, а переменные шаблона указываются в __UPPERCASE__. Таким образом, для передачи данных из БД в шаблон, пришлось бы вручную переназначать переменные при передаче в шаблон. Ключ ''COLS_UPPER'' дублирует ключи в хеше в в виде UPPERCASE, что позволяет передавать строки результата в шаблон без дополнительной логики. | ||
+ | |||
+ | ==== Создание базовой страницы ==== | ||
+ | |||
+ | Создаем базовую страницу сервиса | ||
+ | |||
+ | ''cgi-bin/hello.cgi'' | ||
+ | | ||
+ | <code> | ||
+ | #!/usr/bin/perl | ||
+ | =head1 NAME | ||
+ | |||
+ | Hello world | ||
+ | |||
+ | =cut | ||
+ | |||
+ | use strict; | ||
+ | use warnings; | ||
+ | |||
+ | # Включение нужных путей | ||
+ | BEGIN { | ||
+ | our $libpath = '../'; | ||
+ | my $sql_type = 'mysql'; | ||
+ | unshift(@INC, | ||
+ | $libpath . "Abills/$sql_type/", | ||
+ | $libpath . "Abills/modules/", | ||
+ | $libpath . '/lib/', | ||
+ | $libpath . '/Abills/', | ||
+ | $libpath | ||
+ | ); | ||
+ | } | ||
+ | |||
+ | #Модуль конфигурации | ||
+ | use Conf; | ||
+ | our ( | ||
+ | $libpath, | ||
+ | %conf, | ||
+ | %lang, | ||
+ | $base_dir, | ||
+ | ); | ||
+ | |||
+ | # конфигурационный файл | ||
+ | do "../libexec/config.pl"; | ||
+ | |||
+ | # HTML визуализация | ||
+ | use Abills::HTML; | ||
+ | my $html = Abills::HTML->new( | ||
+ | { | ||
+ | IMG_PATH => 'img/', | ||
+ | NO_PRINT => 1, | ||
+ | CONF => \%conf, | ||
+ | CHARSET => $conf{default_charset}, | ||
+ | } | ||
+ | ); | ||
+ | |||
+ | # Подключение базы | ||
+ | use Abills::SQL; | ||
+ | my $db = Abills::SQL->connect($conf{dbtype}, $conf{dbhost}, $conf{dbname}, $conf{dbuser}, $conf{dbpasswd}, { | ||
+ | CHARSET => ($conf{dbcharset}) ? $conf{dbcharset} : undef | ||
+ | }); | ||
+ | |||
+ | # Включение базовых словарей | ||
+ | if($html->{language} ne 'english') { | ||
+ | do $libpath . "/language/english.pl"; | ||
+ | } | ||
+ | |||
+ | if(-f $libpath . "/language/$html->{language}.pl") { | ||
+ | do $libpath."/language/$html->{language}.pl"; | ||
+ | } | ||
+ | |||
+ | # Подключение модуля работы с шаблонами | ||
+ | require Abills::Templates; | ||
+ | |||
+ | # Включение конфигурационного файла | ||
+ | Conf->new($db, undef, \%conf); | ||
+ | |||
+ | $html->{METATAGS} = templates('metatags_client'); | ||
+ | |||
+ | print $html->header(); | ||
+ | |||
+ | # Диалоговое окно приветсвия | ||
+ | print $html->message('info', $lang{INFO}, "Hello world\nSystem name '$conf{WEB_TITLE}'"); | ||
+ | |||
+ | 1; | ||
+ | </code> |