Шаблон продвинутого приложения
- Details
- 10 Август 2014 14:22
Этот шаблон предназначен для больших проектов, разрабатываемых в группах, где бекэнд отделен от фронтэнда, приложение разворачивается на нескольких серверах и т.д. Этот шаблон приложения дает больше чем просто структуру и предоставляет из коробки базу данных, механизм регистрации и восстановления пароля.
Установка
Установка с помощью Cjmposer
Если в Вашей системе еще не установлен Composer, можете скачать его по ссылке http://getcomposer.org/, или выполните следующую команду в ОС Linux/Unix/MacOS:
curl -s http://getcomposer.org/installer | php
Вы можете установить шаблон приложения следующей командой:
php composer.phar create-project --prefer-dist --stability=dev yiisoft/yii2-app-advanced /path/to/yii-application
Начало
После установки, Вам нужно выполнить несколько шагов, что бы инициализировать приложение. Вам нужно будет сделать это только один раз.
- Выполните команду
init
и выберите в качестве окруженияdev
.
php /path/to/yii-application/init
- Содайте новую базу данных внесите соответствующие изменения в конфигурацию
components.db
вcommon/config/main-local.php
. - выполните миграцию с помощью консольной команды
yii migrate
. - Установите корневой каталог Вашего веб-сервера:
* для фронтэнда /path/to/yii-application/frontend/web/
и используйте URL-адрес http://frontend/
* для бекэнда /path/to/yii-application/backend/web/
и используйте URL-адрес http://backend/
Структура каталогов
Корневой каталог содержит следующие подкаталоги:
backend
- бекэнд приложения.common
- общие файлы всех приложений.console
- консольное приложение.environments
- настройки окружения.frontend
- фронтэнд приложения.
Корневой каталог содержит набор файлов.
- .gitignore содержит список файлов игнорируемых версионным хранилищем git.
- composer.json - конфигурация Composer, подробнее описано ниже.
- init - скрипт инициализации.
- init.bat - тоже для Windows.
- LICENSE.md - информация о лицензии. Можете разместить здесь свою лицензию.
- README.md - простая информация об установленном шаблоне. Подумайте о замене информацией о вашем проекте и его установке.
- requirements.php - проверка требований Yii.
- yii - стартовое консольное приложение.
- yii.bat - тоже для Windows.
Предопределенные псевдонимы пути
- @yii - каталог фреймворка.
- @app - каталог текущего приложения.
- @common - каталог общих файлов.
- @frontend - каталог фронтэнда веб приложения.
- @backend - каталог бекэнда веб приложения.
- @console - каталог консольного приложения.
- @runtime - каталог логов, файлового кеша и т.п. текущего веб-приложения.
- @vendor - каталог фалов сторонних поставщиков Composer.
- @web - базовый URL текущего веб-приложения.
- @webroot - корневой веб-каталог текущего приложения.
Приложения
Шаблон продвинутого приложения содержит три приложения: фронтэнд, бекэнд и консольное. Фронтэнд - это обычно то, что представляет пользователю проект. Бекэнд - это панель администратора, аналитика и другой, подобный функционал. Консольное приложение обычно используется как задачи cron и низкоуровневого управления сервером. Также оно используется во время развертывания приложения и как обработчик миграций и ресурсов.
Шаблон также содержит каталог common
, который содержит файлы, используемые более чем одним приложением. Например, модель User
.
Фронтэнд и бекэнд веб-приложения и оба содержат каталог web
. Это корневой веб-каталог, на который нужно настроить Ваш веб-сервер.
Каждое приложение имеет свое собственное пространство имен и псевдоним, соответствующий своему названию. Это также относится к каталогу common.
Конфигурация и окружение
Существует несколько проблем связанных с конфигурацией:
- У каждого члена команды есть свои параметры конфигурации. Коммит такой конфигурации заденет всех членов команды.
- Пароль от продакшн базы данных и ключи API не должны храниться в репозитории.
- Может быть несколько серверов: разработка, тестирование, продакшн. Каждый может иметь свою конфигурацию.
- Определение всех опций конфигурации на все случаи - это монотонная работа и отнимает много времени при обслуживании.
Для решения этих проблем в Yii вводится понятие окружения, которое на самом деле очень простое. Каждое окружение представляет собой набор файлов в каталоге environments
. Команда init
используется для переключения между ними. На самом деле, она просто копирует все содержимое каталога окружения в корневой каталог приложений.
Обычно окружение содержит стартовые файлы приложения, такие как index.php
и конфигурационные файлы с суффиксом -local.php
. Они добавлены в .gitignore
и не попадут в репозиторий.
Во избежание дублирования фалы конфигурации переопределяют друг друга. Например, frontend считывает конфигурацию в следующем порядке:
common/config/main.php
common/config/main-local.php
frontend/config/main.php
frontend/config/main-local.php
Параметры считываются в следующем порядке:
common/config/params.php
common/config/params-local.php
frontend/config/params.php
frontend/config/params-local.php
Следующий файл переопределят предыдущий
Ниже приведена полная схема:
Конфигурация Composer
После того как шаблон приложения установлен хорошая мысль настроить composer.json
который можно найти в корневом каталоге:
{ "name": "yiisoft/yii2-app-advanced", "description": "Yii 2 Advanced Application Template", "keywords": ["yii", "framework", "advanced", "application template"], "homepage": "http://www.yiiframework.com/", "type": "project", "license": "BSD-3-Clause", "support": { "issues": "https://github.com/yiisoft/yii2/issues?state=open", "forum": "http://www.yiiframework.com/forum/", "wiki": "http://www.yiiframework.com/wiki/", "irc": "irc://irc.freenode.net/yii", "source": "https://github.com/yiisoft/yii2" }, "minimum-stability": "dev", "require": { "php": ">=5.4.0", "yiisoft/yii2": "*", "yiisoft/yii2-swiftmailer": "*", "yiisoft/yii2-bootstrap": "*", "yiisoft/yii2-debug": "*", "yiisoft/yii2-gii": "*" }, "scripts": { "post-create-project-cmd": [ "yii\\composer\\Installer::setPermission" ] }, "extra": { "writable": [ "backend/runtime", "backend/web/assets", "console/runtime", "console/migrations", "frontend/runtime", "frontend/web/assets" ] } }
Сначала измените основную информацию. Измените name
, description
, keywords
, homepage
и support
в соответствии с вашим проектом.
Интересный момент. В разделе require
Вы можете указать дополнительные пакеты нужные для Вашего приложения. Все эти пакеты поступают с сайта packagist.org, так что не стесняйтесь просмотреть этот сайт в поисках полезного кода.
После того, как Вы изменили composer.json
, Вы можете запустить команду php composer.phar update --prefer-dist
, подождите пока пакеты загрузятся и будут установлены, и можете ими пользоваться. Автозагрузка классов будет происходить автоматически.
Создание ссылок от бекэнда к фронтенду
Часто требуется создать ссылки от бекэнд приложения к фронтэнд приложению. Так как фронтэнд приложение может содержать свои собственные правила URL менеджера, Вам нужно дублировать их для бекэнд приложения называя их по разному:
return [ 'components' => [ 'urlManager' => [ // here is your normal backend url manager config ], 'urlManagerFrontend' => [ // here is your frontend URL manager config ], ], ];
После того как это сделано, Вы можете получить URL-адрес указывающий на фронтэнд следующим образом:
echo Yii::$app->urlManagerFrontend->createUrl(...);
- Tags
- Author
- Андрей Рачков
Авторизуйтесь, чтобы оставить комментарий