nowo-tech/page-layout-kit-bundle

Reusable Symfony page compositor: ordered typed blocks (hero, text, cards, list, cta, compare) with admin reorder and inline CMS modals.

Maintainers

Package info

github.com/nowo-tech/PageLayoutKitBundle

Type:symfony-bundle

pkg:composer/nowo-tech/page-layout-kit-bundle

Transparency log

Fund package maintenance!

HecFranco

Statistics

Installs: 9

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.4 2026-08-19 15:33 UTC

This package is auto-updated.

Last update: 2026-08-19 15:33:41 UTC


README

CI Packagist Version Packagist Downloads License PHP Symfony GitHub stars Coverage

Found this useful? Give it a star on GitHub! It helps us maintain and improve the project.

Reusable Symfony page compositor for ordered, typed content blocks (hero, text, cards, list, cta, compare) with a secured admin reorder UI, inline CMS modals, Doctrine persistence, and Twig-based public rendering.

Compatible with Symfony 7.4+ and 8.x on PHP 8.4+

FrankenPHP Friendly Worker Mode

This bundle is FrankenPHP worker mode friendly.

What is this?

Page Layout Kit Bundle gives Symfony applications a reusable page-layout layer backed by Doctrine. Editors can manage ordered blocks for configured page keys such as home and contact, reorder them in the admin UI, and edit supported blocks through inline CMS modals. Public pages consume the resolved layout through services and Twig templates.

Features

  • Ordered typed blocks: hero, text, cards, list, cta, compare
  • Configurable page keys and locales with default fallback (es, en by default)
  • Admin reorder UI at /admin/pages/{pageKey}/layout
  • Inline modal editing endpoints for supported block types
  • Public rendering via PageBlockProvider, PageBlockView, and Twig templates
  • Legacy fallback and migration command for pre-block JSON/content sources
  • Doctrine entities, repositories, and optional table prefixing
  • Configurable access guard: roles, custom checker, or demo-only unauthenticated mode
  • Optional HTML sanitization for rich-text blocks (html.sanitize: none, strip, allowlist, service)
  • Twig namespace NowoPageLayoutKitBundle with host override precedence
  • Symfony Flex recipe and FrankenPHP demo in demo/symfony8

Quick start

composer require nowo-tech/page-layout-kit-bundle:^1.0
composer require twig/extra-bundle twig/string-extra
# config/packages/nowo_page_layout_kit.yaml
nowo_page_layout_kit:
    default_locale: es
    locales: [es, en]
    pages: [home, contact]
    security:
        access_roles: [ROLE_EDITOR]
# config/routes/nowo_page_layout_kit.yaml
nowo_page_layout_kit:
    resource: '@NowoPageLayoutKitBundle/Resources/config/routing.yaml'
php bin/console doctrine:migrations:diff
php bin/console doctrine:migrations:migrate

Admin reorder UI: /admin/pages/home/layout and /admin/pages/contact/layout.

Development

make up
make test
make phpstan
make -C demo/symfony8 up
make demo-smoke

Demo default URL: http://localhost:8127.

Documentation

Additional documentation

Tests and coverage

Area Status Command
PHP src/ coverage target ≥99% (CI gate) make test-coverage
Unit and bundle QA Enabled make test
Full release checks Enabled make release-check
make test
make test-coverage
make release-check

License

MIT — see LICENSE.