Пакет конструктор предназначен для генерации кода.
В состав пакета входят классы различных конструкторов (для шаблонов, моделей и т.д.), а так же набор задач для 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-приложения:
Вы можете запустить любую процедуру индивидуально.
Тег | Описание | Зависимости | ||
---|---|---|---|---|
Расположение: 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 будет генерировать для вас код.
Обсуждение