Skip to content

[6.x] Implement template renderers using Laravel manager#19290

Merged
brandonkelly merged 4 commits into
6.xfrom
feature/template-manager
Jul 22, 2026
Merged

[6.x] Implement template renderers using Laravel manager#19290
brandonkelly merged 4 commits into
6.xfrom
feature/template-manager

Conversation

@riasvdv

@riasvdv riasvdv commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Description

Instead of our own manager-like system, use what Laravel provides for us and implement the template renderers using Laravel's manager concept.

@github-actions

github-actions Bot commented Jul 22, 2026

Copy link
Copy Markdown

📚 Storybook previews

@craftcms/uiopen Storybook

No changed components detected in this Storybook.

resources/jsopen Storybook

No changed components detected in this Storybook.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR replaces the custom “manager-like” template renderer selection with a Laravel Manager-based TemplateManager, and updates Twig/Blade rendering entry points, contracts, events, tests, and docs to match the new architecture.

Changes:

  • Introduces CraftCms\Cms\View\TemplateManager (scoped) plus a Template facade, using Laravel Manager semantics for renderer registration/caching and auto-selection by resolved file.
  • Refactors template rendering APIs/contracts/events to align with the manager (incl. new TwigRendererInterface, updated TemplateRendered/PageTemplateRendered payloads).
  • Updates call sites, helpers, adapter shims, tests, and documentation to use TemplateManager/Template instead of the removed TemplateRenderer/BaseTemplateRenderer.

Reviewed changes

Copilot reviewed 54 out of 54 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
yii2-adapter/tests-laravel/View/CraftVariableCompatibilityTest.php Switches compatibility test to TemplateManager.
yii2-adapter/legacy/web/View.php Updates deprecated Yii-era view methods to delegate to Template/TemplateManager.
tests/Unit/View/TwigEngineTest.php Adjusts Twig engine tests to new rendering path and resets Template facade state.
tests/Unit/View/TemplateRendererTest.php Removes tests for deleted TemplateRenderer.
tests/Unit/View/TemplateManagerTest.php Adds coverage for manager renderer resolution/selection/caching behavior.
tests/Unit/View/TemplateManagerLifecycleTest.php Adds coverage for manager render state + lifecycle/event ordering.
tests/Unit/View/BladeRendererTest.php Routes Blade rendering tests through TemplateManager.
tests/Unit/View/BaseTemplateRendererTest.php Removes tests for deleted BaseTemplateRenderer.
tests/Unit/Twig/TwigRendererTest.php Updates Twig renderer tests to use TemplateManager APIs.
tests/Unit/Twig/TwigExceptionMapperTest.php Updates nested render test to new manager class paths.
tests/Unit/Twig/Tags/TagTagTest.php Switches tag rendering tests to TemplateManager.
tests/Unit/Twig/Tags/SwitchTagTest.php Switches tag rendering tests to TemplateManager.
tests/Unit/Twig/Tags/RequireEditionTagTest.php Switches tag rendering tests to TemplateManager.
tests/Unit/Twig/Tags/RegisterResourceTagTest.php Switches tag rendering tests to TemplateManager.
tests/Unit/Twig/Tags/RedirectTagTest.php Switches tag rendering tests to TemplateManager.
tests/Unit/Twig/Tags/NavTagTest.php Switches tag rendering tests to TemplateManager.
tests/Unit/Twig/Tags/NamespaceTagTest.php Switches tag rendering tests to TemplateManager.
tests/Unit/Twig/Tags/HookTagTest.php Switches tag rendering tests to TemplateManager.
tests/Unit/Twig/Tags/HeaderTagTest.php Switches tag rendering tests to TemplateManager.
tests/Unit/Twig/Tags/HasSomeHasEveryTest.php Switches tag rendering tests to TemplateManager.
tests/Unit/Twig/Tags/ExpiresTagTest.php Switches tag rendering tests to TemplateManager.
tests/Unit/Twig/Tags/ExitTagTest.php Switches tag rendering tests to TemplateManager.
tests/Unit/Twig/Tags/DeprecatedTagTest.php Switches tag rendering tests to TemplateManager.
tests/Unit/Twig/Tags/CacheTagTest.php Switches tag rendering tests to TemplateManager.
tests/Unit/Twig/Extensions/LaravelExtensionTest.php Updates Twig blade() function test to TemplateManager.
tests/Unit/HelpersTest.php Updates helpers to support explicit renderer selection (TemplateEngine).
tests/Feature/Twig/Tags/RequireLoginGuestTagTest.php Switches feature tests to TemplateManager.
tests/Feature/Twig/Tags/RequireAuthTagTest.php Switches feature tests to TemplateManager.
tests/Feature/Twig/Tags/PaginateTagTest.php Switches feature tests to TemplateManager.
tests/Feature/Field/MarkdownFieldTest.php Updates Twig string rendering in Markdown field test to manager API.
src/View/TwigEngine.php Routes Twig engine rendering through Template facade + explicit Twig engine.
src/View/TemplateRenderer.php Removes legacy renderer-selection class.
src/View/TemplateManager.php Adds Laravel Manager-based template manager (core change).
src/View/PageLifecycle.php Updates doc wording to reflect TemplateManager.
src/View/Events/TemplateRendering.php Updates before-event payload (no renderer identity).
src/View/Events/TemplateRenderersResolving.php Removes legacy renderer-discovery event.
src/View/Events/TemplateRendered.php Updates after-event payload to include final rendererName.
src/View/Events/PageTemplateRendering.php Updates before-event payload (no renderer identity).
src/View/Events/PageTemplateRendered.php Updates after-event payload to include final rendererName.
src/View/Contracts/TemplateRendererInterface.php Simplifies renderer contract to file+string rendering.
src/View/BaseTemplateRenderer.php Removes legacy base renderer implementation.
src/Twig/TwigRenderer.php Adapts Twig renderer to new contracts (manager owns lifecycle/state).
src/Twig/NodeVisitors/EventTagFinder.php Uses Template facade for page-render detection.
src/Twig/NodeVisitors/EventTagAdder.php Uses Template facade for page-render detection.
src/Twig/Extensions/LaravelExtension.php Updates Twig blade() helper to resolve via Template.
src/Twig/Contracts/TwigRendererInterface.php Adds Twig-specific renderer contract.
src/SystemMessage/Actions/FormatSystemMessageMailAction.php Uses TemplateManager (explicit Twig engine) for system mail template rendering.
src/Support/Facades/Template.php Adds Template facade for TemplateManager.
src/Route/TemplateRoute.php Routes front-end template requests through Template facade.
src/helpers.php Updates template helpers to call Template and allow explicit renderer selection.
src/Blade/BladeRenderer.php Adapts Blade renderer to new renderer contract (manager owns lifecycle/state).
docs/blade.md Documents TemplateManager/Template facade and renderer extension semantics.
composer.json Updates CI pint invocation (adds --parallel).
CHANGELOG.md Notes new manager, facade, contracts, and event payload changes.

Comment thread src/View/TemplateManager.php Outdated
Comment thread src/Twig/TwigRenderer.php Outdated
Comment thread CHANGELOG.md Outdated
@riasvdv
riasvdv requested a review from brandonkelly July 22, 2026 11:57
@riasvdv
riasvdv marked this pull request as ready for review July 22, 2026 11:57
@brandonkelly
brandonkelly merged commit e2c9f79 into 6.x Jul 22, 2026
9 checks passed
@brandonkelly
brandonkelly deleted the feature/template-manager branch July 22, 2026 15:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants