Docs

Манифесты модулей

uticms.modules.manifests · verified 2026-07-11

Обзор

Scope
Операционные контракты ниже high-level module lifecycle

Ключевые понятия

Manifest Name
Runtime-идентичность модуля из module.json; отличается от public slug.
Manifest Slug
Lowercase public/runtime identifier, принимаемый module asset lookup.
Module Env
Database overrides для значений из env.json; не произвольные редактируемые metadata модуля.
Module Setting
Типизированные key-value operational data, принадлежащие модулю.
Eligible Public Runtime
Core module или module с active database record.

Структура

  • Manifest Sections
    • name
    • slug
    • version
    • priority
    • is_core
    • dependencies
    • providers
    • routes
    • views
    • migrations
    • seeders
    • assets
    • site_layout_driver
    • install
    • autoload
  • Persistent Configuration
    • Declaration Defaultsmodules/<ModuleName>/env.json
    • Database Overridesmodules.env JSON
    • Operational Valuesтаблица module_settings
  • Public Runtime
    • Gateapp/Services/Modules/ModuleRuntimeGate.php
    • Viewsapp/Services/Modules/ModuleViewLoader.php
    • Assetsapp/Services/Modules/ModuleAssetLoader.php

Факты

  • ModuleRuntimeGate разрешает public views, assets и layout drivers только для manifests с is_core или modules, active в modules table. authoritative
  • ModuleViewLoader регистрирует Blade namespace из manifest views.namespace и views.path; resources/views/<namespace> имеет приоритет над module view directory. authoritative
  • Отсутствующий namespaced view может вызвать targeted manifest lookup и registration, если модуль остаётся eligible для public runtime. authoritative
  • Preparing views for a Site регистрирует general eligible module views и просит ModuleLayoutDriverBootstrap зарегистрировать layout driver сайта. authoritative
  • ModuleAssetLoader резолвит eligible asset сначала из public/module/<slug>, затем из module Resources path через dynamic route. authoritative
  • Asset lookup принимает manifest slug, normalized manifest name или normalized folder name. authoritative
  • Module asset helper может добавлять module database version с fallback на manifest version. authoritative
  • ModuleAssetLoader — singleton и мемоизирует URL resolution, version lookup, module directory и published/source paths в рамках одного HTTP request. authoritative
  • module_settings уникален по module_id и key и хранит value, type, description и public visibility независимо от modules.env. authoritative

Инструкции

Add Module View

  1. объявить views.namespace и views.path в module.json
  2. создать view в declared module path или application override path
  3. убедиться, что модуль core или active
  4. рендерить через namespace::view и проверить runtime registration

Publish Asset

  1. объявить или найти module asset root
  2. установить или активировать модуль, или запустить module asset publication command
  3. запросить public module URL
  4. проверить dynamic fallback только если published file недоступен

Правила

Architectural rule

Не экспонируйте module Blade views, source assets или module-provided layout только потому, что папка модуля существует.

Architectural rule

Не используйте modules.env как хранилище mutable module identity, manifest или operational settings.

Примеры

Module Asset Blade

Используйте manifest slug (shop-b2c), а не runtime name (ShopB2C).

modules/ShopB2C/Views/partials/scripts.blade.php

Manifest Identity

name для isModule(); slug для module_asset(); id_marketplace только для entitlement.

{ "name": "ShopB2C", "slug": "shop-b2c", "id_marketplace": "ShopB2C" }

modules/ShopB2C/module.json