SLOT-H: Модуль Free
Модуль Free отвечает за публичную часть сайта. Он доступен без авторизации и содержит страницы, которые видит пользователь при первом посещении.
Состав модуля
Главная страница
Контроллер `Index` обрабатывает запросы к главной странице. Он отвечает за отображение стартовой страницы проекта, которая задаётся в конфигурации.
Страница About
Контроллер `About` содержит информацию о проекте или компании. Статическая страница, не требующая динамического контента.
Страница Docs
Контроллер `Docs` содержит документацию или инструкции для пользователей. Статическая страница.
Статические страницы
Контроллер `Page` обрабатывает статические страницы: политика конфиденциальности и пользовательское соглашение.
Раздача статики
Контроллер `Scope` обслуживает статические файлы: CSS, JavaScript, шрифты. Файлы отдаются через контроллер, а не напрямую через веб-сервер. Это позволяет контролировать кеширование и версионирование файлов. При запросе файла система проверяет его хеш и отдаёт актуальную версию.
API для публичной части
Контроллер `Person` предоставляет API-методы для работы с пользователями в публичной части: проверка статуса авторизации, получение уведомлений, обработка сессии.
Отсутствие моделей
В модуле Free отсутствует папка `Models` и `DbTables`. Это демонстрирует, что модели являются опциональной частью модуля. Если модуль не работает с собственными таблицами в базе данных, папка `Models` не создаётся.
Это также подчёркивает принцип, заложенный в архитектуре: контроллеры не знают о моделях напрямую. Они вызывают модели тогда, когда это необходимо, и только те, которые нужны для конкретного экшена. Отсутствие папки `Models` в модуле не мешает контроллерам работать с моделями из других модулей, например, из `Base`.
Структура модуля
Modules/Free/
├── Bootstrap.php # Загрузка модуля
├── Crud.php # Права доступа
├── Preloader.php # Предзагрузка (авторизация)
├── Controllers/ # Контроллеры
│ ├── About.php # Страница "О нас"
│ ├── Docs.php # Страница документации
│ ├── Index.php # Главная страница
│ ├── Page.php # Статические страницы (policy, terms)
│ ├── Person.php # API публичной части
│ └── Scope.php # Раздача статики
├── Public/ # CSS, JS
│ ├── css/
│ │ └── Project_1/
│ │ ├── About/
│ │ │ └── index.css
│ │ ├── Docs/
│ │ │ └── index.css
│ │ ├── Index/
│ │ │ ├── auth.css
│ │ │ └── index.css
│ │ └── Page/
│ │ └── policy_terms.css
│ └── js/
│ └── Project_1/
│ ├── About/
│ │ └── index.js
│ ├── Docs/
│ │ └── index.js
│ └── Index/
│ ├── auth.js
│ └── index.js
└── Views/ # Шаблоны
└── Project_1/
├── About/
│ └── index.phtml
├── Docs/
│ └── index.phtml
├── Index/
│ ├── auth.phtml
│ └── index.phtml
└── Page/
├── policy.phtml
└── terms.phtml
Права доступа
Модуль Free доступен без авторизации. Все контроллеры модуля имеют права на чтение (`READ_RULE`) для всех пользователей, включая неавторизованных. Это позволяет показывать публичные страницы без входа в систему.
Особенности реализации
- Статические страницы About и Docs имеют собственные представления и стили. Страницы policy и terms используют общий стиль `policy_terms.css`.
- Контроллер `Scope` обрабатывает запросы к статическим файлам через хеш, что гарантирует актуальность файлов при каждом изменении. Браузер кеширует файлы, но при изменении хеш меняется, и браузер загружает новую версию.
- Модуль Free может быть расширен дополнительными контроллерами и представлениями для конкретного проекта. Все публичные страницы, не требующие авторизации, должны располагаться в этом модуле.
Что дальше?
- ➡️ Раздел 13. Модуль Geo
- ➡️ Раздел 14. Создание модуля
- ➡️ Раздел 15. Структура базы данных