====== Пакет Сonstructor ====== Пакет конструктор предназначен для генерации кода. В состав пакета входят классы различных конструкторов (для шаблонов, моделей и т.д.), а так же набор задач для [[limb3:ru:packages:taskman:limb.php|limb.php]], для установки и настройки веб-приложения. ===== Создание проекта ===== На этой странице будет описан процесс создания проекта средствами [[limb3:ru:packages:taskman:limb.php|limb.php]].\\ Для ознакомления с старым способом установки посетите страницу [[limb3:ru:cms_manual_setup|Установка пакета CMS]] ==== Задачи создания проекта пакета CONSTRUCTOR ==== ^Тег^Описание^Зависимости^ |||Расположение: **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 приложения. Вы можете запустить любую процедуру индивидуально. ===== Генерация сущностей приложения ===== ==== Задачи создания сущностей проекта пакета CONSTRUCTOR ==== ^Тег^Описание^Зависимости^ |||Расположение: **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 | | ==== Cоздание сущностей проекта ==== Создадим список ссылок на друзей сайта. 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/ Затем добавим туда пункт для нашей модели. 'Контент', '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 # Класс контроллера публичной части сайта. Для того чтобы оформить шаблоны по своему вкусу вам понадобятся некоторые знания о шаблонизаторе [[limb3:ru:packages:macro|macro]]. ===== Генерация кода из собственных шаблонов ===== Пакет конструктора создан, чтобы избавить разработчика от рутинного написания базовых классов, однако вы сами можете определить как конструктор будет оформлять ваши базовые классы и какой функционал будет в них присутствовать. Для этого нужно создать конфигурационный файл settings/constructor.conf.php приблизительно следующего содержания: '_constructor/' ); Cкопируйте каталог lib/limb/constructor/template в template/_constructor cp lib/limb/constructor/template template/_constructor Теперь вы можете изменять шаблоны, по которым Constructor будет генерировать для вас код.