Приложение ¶
Структура приложения Yii Studio ¶
Приложение Yii Studio имеет несколько отличную от классического Yii2-приложения структуру. Ниже приведен список основных директорий и файлов демо-приложения:
admin/ каталог системы Yii Studio (Панель управления, модули и т.д.)
app_demo/ каталог демо-приложения (структура вашего приложения будет аналогичной)
assets/ содержит классы для подключения ресурсов приложения
config/ конфигурационные файлы
db.php конфигурация для подключения к БД (prod) YII_ENV = 'prod'
db_dev.php конфигурация для подключения к БД (dev) YII_ENV = 'dev'
web.php конфигурация приложения (заменяет, при совпадении, настройки из файла admin/config/admin.php)
controllers/ контроллеры
demo_data/ демо-данные
dumps/ дампы приложения
mail/ содержит шаблон и виды для почтовых отправлений приложения
media/ содержит css, js, png, ... подключаемые приложением
css/
main.css файл css подключаемый ко всему приложению
img/ картинки
js/
catalog/
item/
main.js файл js автоматически подключаемый для действия item контроллера catalog
main.js файл js автоматически подключаемый ко всему приложению
messages/ файлы переводов
models/ модели
views/ виды приложения
public_html/ корневая директория Web приложения. Содержит файлы, доступные через Web
assets/ опубликованные ресурсы, используемые приложением (js, css, ...)
index.php точка входа в приложение. С него начинается выполнение приложения
runtime/ файлы, которые генерирует Yii 2 во время выполнения приложения (логи, кэш и т.п.)
vendor/ содержит подключаемые пакеты, фреймворк Yii 2 и т.д.
yii скрипт выполнения консольного приложения Yii 2
Подробнее о каталоге admin/ и структуре системы здесь.
Примечание: Файлы ресурсов css, js автоматически подключаются в приложение, если имеют название
main
и находятся в соответствующей текущему роутингу иерархии папок. Например, файл catalog/item/main.js автоматически подключится в вид для действия item контроллера catalog.
Конфигурации приложения ¶
Когда входной скрипт создаёт приложение, он загружает конфиги и применяет их к приложению, например:
$config = require(__DIR__ . '/../admin/config/admin.php'); //Подключение общего для всех приложений конфига
$config = array_replace_recursive($config,require(__DIR__ . '/../' . APP_NAME . '/config/web.php'));//Подключение конфига для приложения
if (YII_ENV_PROD) {
$config = array_replace_recursive($config, require(__DIR__ . '/../' . APP_NAME . '/config/db.php'));//Параметры подключения к БД прод
} else {
$config = array_replace_recursive($config, require(__DIR__ . '/../' . APP_NAME . '/config/db_dev.php'));//Параметры подключения к БД разработка
}
Конфигурационный файл демо-приложения:
$config = [
'layout' => 'public',
'components' => [
'request' => [
'cookieValidationKey' => '..............',
],
'urlManager' => [
'rules' => [
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'catalog/search' => 'catalog/search',
'catalog/<slug:[\w-]+>' => 'catalog',
'catalog/<category:[\w-]+>/<slug:[\w-]+>' => 'catalog/item',
'brand/<slug:[\w-]+>' => 'brand',
'news/<slug:[\w-]+>' => 'news',
'gallery/<slug:[\w-]+>' => 'gallery',
[
'pattern' => 'blog',
'route' => 'article',
'defaults' => ['slug' => 'blog']
],
[
'pattern' => 'blog/<slug:[\w-]+>',
'route' => 'article/item',
'defaults' => ['category' => 'blog']
],
[
'pattern' => 'help',
'route' => 'article',
'defaults' => ['slug' => 'help']
],
[
'pattern' => 'help/<slug:[\w-]+>',
'route' => 'article/item',
'defaults' => ['category' => 'help']
],
[
'pattern' => 'about',
'route' => 'article',
'defaults' => ['slug' => 'about']
],
[
'pattern' => 'about/<slug:[\w-]+>',
'route' => 'article/item',
'defaults' => ['category' => 'about']
],
'article/<slug:[\w-]+>' => 'article',
'article/<category:[\w-]+>/<slug:[\w-]+>' => 'article/item',
],
],
],
'params' => [],
];
return $config;
Остальные настройки входной скрипт получит в конфиге системы admin\config\admin.php
(для консольного приложения admin\config\console.php
).
Для приложения также настривается псевдоним вида @APP_NAME
.
Подробнее про конфигурационные файлы системы здесь.