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. Структура базы данных