semitexa / ssr
Semitexa SSR - Twig-based server rendering with components, layouts, assets, and deferred slots
Requires
- php: ^8.4
- semitexa/locale: *
- semitexa/tenancy: *
- twig/twig: ^3.10
- dev-master
- 2026.04.05.0855
- 2026.04.03.1240
- 2025.12.27-alpha
- 1.0.33
- v1.0.32
- 1.0.30
- 1.0.28
- v1.0.26
- v1.0.24
- v1.0.23
- v1.0.22
- v1.0.21
- v1.0.20
- v1.0.19
- v1.0.18
- v1.0.17
- v1.0.16
- v1.0.15
- v1.0.14
- v1.0.13
- v1.0.12
- v1.0.11
- v1.0.10
- v1.0.6
- v1.0.5
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
- dev-develop
- dev-review/package-metadata-20260323
This package is auto-updated.
Last update: 2026-04-05 09:00:35 UTC
README
Twig-based server-side rendering with components, layout slots, theme overrides, and locale-aware URL generation.
Purpose
Renders HTML responses using Twig. Provides a component system discovered via #[AsComponent], layout slot composition via #[AsLayoutSlot], theme override support for module templates, and locale-aware URL generation.
Role in Semitexa
Depends on Twig, Locale, and Tenancy. Used by Mail, Platform WM, Platform User, Platform Settings, and Demo. Required for packages that render HTML pages.
Key Features
#[AsComponent]attribute for component discovery#[AsLayoutSlot]for layout slot registration#[AsDataProvider]and#[AsTwigExtension]for template extensionsLayoutRendererfor slot-based page composition- Theme override system (module templates overridable via
src/theme/) UrlGeneratorwith locale-aware routingModuleTemplateRegistryfor per-module template discovery- Development hot-reload support
- Automatic
robots.txtfallback with Semitexa-specific crawler hints when the project does not provide a real file - Automatic
llms.txtfallback for LLM-oriented crawl guidance when the project does not provide a real file
Deferred SSE Safety
SSR_DEFERRED_PERSISTENT_SSE=falseis the safe default. Deferred SSR streams final HTML blocks once and then closes the SSE connection.SSR_DEFERRED_PERSISTENT_SSE_REQUIRE_AUTH=trueadds a second guard for persistent mode. Even when persistent SSE is explicitly enabled, live reconnect-capable streams still require an authenticated session by default.- For public pages and demos, keep persistent SSE disabled unless you have a specific live-update use case and have capacity controls in place.
Notes
SSR is required for HTML pages. JSON-only APIs do not need this package. Layout slots use handle-based scoping: * for global, layout frame name, or specific page handle.
If a project does not provide robots.txt or public/robots.txt, SSR emits a minimal default file automatically. Set ROBOTS_SITEMAP_URL when you want the generated file to advertise a classic sitemap explicitly. SSR also exposes /sitemap.json as a crawler-oriented JSON route inventory and advertises it from the fallback robots.txt.
If a project does not provide llms.txt or public/llms.txt, SSR emits a fallback /llms.txt document that points agents to /sitemap.json, /robots.txt, and Semitexa's page-document JSON conventions.
When an SSR page route declares extra response formats via #[AsPayload(produces: ...)], Semitexa renders <link rel="alternate" type="..."> tags for the non-HTML variants of the current payload DTO. This keeps the <head> aligned with the actual route contract instead of hardcoding alternates in Twig.