Пакет конструктор предназначен для генерации кода.
В состав пакета входят классы различных конструкторов (для шаблонов, моделей и т.д.), а так же набор задач для limb.php, для установки и настройки веб-приложения.
На этой странице будет описан процесс создания проекта средствами limb.php.
Для ознакомления с старым способом установки посетите страницу Установка пакета CMS
Тег | Описание | Зависимости |
---|---|---|
Расположение: limb/constuctor/cli/project.inc.php/ | ||
project_create | Init project meta task | project_files, project_shares, project_var_dir, project_init_cms, project_db_load |
project_db_create | Create db by specified DSN | project_db_init_config |
project_db_init_config | Init db config by given DSN param | |
project_db_load | Init db | project_db_create |
project_files | Create new project in specified path | |
project_init_cms | init cms installation | |
project_shares | Create folders in /www/shared for all packages | |
project_var_dir | Create var folder |
Для создания скелета проекта достаточно выполнить 1 процедуру project_create:
php limb.php project_create
Вам будет предложено ввести все необходимые параметры интерактивно.
Процедура последовательно запустит все задачи необходимые для функционирования limb-приложения:
- project_create
- project_files — создает структуру каталогов limb-приложения, устанавливает копию limb (по желанию с пакетами из incubator'а) и загружает скелет веб приложения из пакета web_app
- project_shares — создает символические ссылки на shared ресурсы пакетов, если невозможно создать символические ссылки — копирует данные.
- project_var_dir — создает в проекте папку var/ в которой будут хранится скомпилированные шаблоны, кеш приложения и прочие генерируемые данные.
- project_init_cms — создает настроечный файл /setup.php и файл класса CMS приложения /src/LimbApplication.class.php
- project_db_init_config — создает конфигурационный файл подключения к БД. Запрашивает DSN в интерактивном режиме.
- project_db_create — создает базу данных.
- project_db_load — загружает в базу данных служебные таблицы CMS приложения.
- project_db_create — создает базу данных.
Вы можете запустить любую процедуру индивидуально.
Тег | Описание | Зависимости |
---|---|---|
Расположение: limb/constuctor/cli/entity.inc.php/ | ||
entity_create | create model, front and admin controllers, front and admin templates for entity specified by table name | entity_create_model entity_create_front entity_create_admin |
entity_create_model | create model specified by table name | |
entity_create_front | create front controller and front templates for entity specified by table name | |
entity_create_admin | create admin controller and admin templates for entity specified by table name | |
entity_create_tree | create model, front and admin controllers, front and admin templates for tree entity specified by table name |
Создадим список ссылок на друзей сайта.
CREATE TABLE link (
id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(150),
url VARCHAR(150),
DESCRIPTION text
) DEFAULT CHARSET=utf8 ENGINE=InnoDB;
Обычная задача, при работе с подобными списками — отображение самого списка, отображение отдельного элемента, а так же CRUD-часть приложения в административном разделе сайта. Для этого потребуется создать модель Link, контроллеры публичного и административного разделов, а так же шаблоны для каждого из Action'ов этих контроллеров.
Посмотрим как LIMB3 сделает все это за нас:
php limb.php entity_create link
Все, что нужно сделать руками — только добавить пункт меню в settings/navigation.conf.php
Для начала скопируем navigation.conf.php в папку settings в корне проекта
cp lib/limb/cms/settings/navigation.conf.php settings/
Затем добавим туда пункт для нашей модели.
<?php
lmb_require('limb/cms/src/model/lmbCmsUserRoles.class.php');
$editor = array(array('title' => 'Контент', 'icon' => '/shared/cms/images/icons/menu_content.png', 'children' => array(
array(
'title' => 'Текстовые страницы',
'url' => '/admin_document',
'icon' => '/shared/cms/images/icons/page.png',
),
array(
'title' => 'Текстовые блоки',
'url' => '/admin_text_block',
'icon' => '/shared/cms/images/icons/layout.png',
),
array(
'title' => 'Мета-данные (SEO)',
'url' => '/admin_seo',
'icon' => '/shared/cms/images/icons/page_white_stack.png',
),
/** Добавим пункт для друзей сайта **/
array(
'title' => 'Друзья',
'url' => '/admin_link',
'icon' => '/shared/cms/images/icons/pictures.png',
), /** вот и все **/
)));
$only_admin = array(array('title' => 'Администрирование', 'icon' => '/shared/cms/images/icons/menu_service.png','children' => array(
array(
'title' => 'Пользователи',
'url' => '/admin_user',
'icon' => '/shared/cms/images/icons/user.png',
),
)));
$conf = array(
lmbCmsUserRoles :: EDITOR => $editor,
lmbCmsUserRoles :: ADMIN => array_merge_recursive($editor, $only_admin)
);
Прежде, чем проверить на работоспособность наше творчество не забываем чистить кэш.
rm -rf ./var/* # внимание, это папка var внутри проекта, и ни в коем случае не системная /var !!! Будьте внимательны!!!
Заходим в админку, видим новый пункт в навигации и CRUD для таблицы link. http://localhost/link — и видим список, созданных нами ссылок, при клике на id у видим подробную информацию о записи. Осталось лишь отредактировать шаблоны.
Давайте разберемся, что же на самом деле произошло при выполнении процедуры limb.php entity_create (см. выше)? Скрипт сгенерировал классы модели, контроллера, контроллера админки, а так же шаблоны для административной и публичной частей сайта.
Вот файлы, которые были добавлены скриптом конструктора:
template/link/display.phtml # шаблон для отображения списка ссылок в публичной части
template/link/item.phtml # шаблон для подробного просмотра информации о ссылке
template/admin_link/form_fields.phtml # Поля формы для добавления/редактирования ссылки
template/admin_link/display.phtml # Шаблон отображения списка ссылок в административной части
template/admin_link/edit.phtml # Шаблон редактирования ссылки
template/admin_link/delete.phtml # Шаблон удаления одной или нескольких ссылок
template/admin_link/create.phtml # Шаблон создания новой ссылки
src/model/Link.class.php # Класс модели (Active Record) ссылки. Сюда мы можем дописывать свой функционал
src/controller/AdminLinkController.class.php # Класс контроллера административной части сайта.
src/controller/LinkController.class.php # Класс контроллера публичной части сайта.
Для того чтобы оформить шаблоны по своему вкусу вам понадобятся некоторые знания о шаблонизаторе macro.
Пакет конструктора создан, чтобы избавить разработчика от рутинного написания базовых классов, однако вы сами можете определить как конструктор будет оформлять ваши базовые классы и какой функционал будет в них присутствовать. Для этого нужно создать конфигурационный файл settings/constructor.conf.php приблизительно следующего содержания:
<?php
$conf = array(
'templates_dir' => '_constructor/'
);
Cкопируйте каталог lib/limb/constructor/template в template/_constructor
cp lib/limb/constructor/template template/_constructor
Теперь вы можете изменять шаблоны, по которым Constructor будет генерировать для вас код.