Search by

nowo-tech / ckeditor5-editor-bundle

HecFranco

Symfony form type for rich text using CKEditor 5 (GPL OSS build via Vite). FOS-style YAML profiles, Docker makefile workflow.

Package info

github.com/nowo-tech/CKEditor5EditorBundle

Documentation

Type:symfony-bundle

pkg:composer/nowo-tech/ckeditor5-editor-bundle

Statistics

Installs: 873

Dependents: 1

Suggesters: 5

Stars: 0

Open Issues: 0


README

CI Packagist Version Packagist Downloads License PHP Symfony GitHub stars Coverage

Found this useful? Install from Packagist · Star the repo on GitHub.

Symfony bundle: Ckeditor5EditorType stores HTML in a textarea while CKEditor 5 classic (GPL open-source plugins only) runs in the browser. YAML profiles (FOS-style), Vite IIFE build (ckeditor5-editor.js) under src/Resources/public/. FrankenPHP demos: runtime is selected with FRANKENPHP_MODE (worker default, or classic for per-request PHP / hot-reload). See docs/DEMO-FRANKENPHP.md.

FrankenPHP Friendly Worker Mode

This bundle is FrankenPHP worker mode friendly (including reset_kernel: false / no kernel reset between requests). See FRANKENPHP-WORKER-AUDIT.md.

Features

  • Named YAML profiles (toolbar, min_height, form_theme, preset, theme, optional upload_url).
  • Twig themes for common layouts (Bootstrap 3–5, Foundation, Tailwind 2, table layout).
  • nowo_ckeditor5_editor_script() Twig function: eager build or lazy loader (injects the 1 MB build only when an editor becomes visible — dialog opened, panel expanded, scrolled into view), editor CSS as a linked file (ckeditor5-editor.css, no injected <style> — strict CSP), CSP nonce, content-hash versioned URLs for long-lived caching.
  • nowo_ckeditor5_editor_asset_url(), nowo_ckeditor5_editor_asset_path() and nowo_ckeditor5_editor_asset_package() Twig helpers for published assets (Symfony asset package).
  • pnpm + Vite frontend; Vitest coverage on logger.ts and the lazy loader.
  • Dockerfile + Makefile aligned with other Nowo bundles.
  • Demos: Symfony 8.1 FrankenPHP app under demo/symfony8 (port 8021).

Quick start

composer require nowo-tech/ckeditor5-editor-bundle:^1.0
php bin/console assets:install public
# config/packages/nowo_ckeditor5_editor.yaml
nowo_ckeditor5_editor:
    default_profile: simple
    profiles:
        simple:
            preset: simple
            toolbar: true
            min_height: 240px
            form_theme: form_div_layout.html.twig
            debug: false
            theme: light
use Nowo\Ckeditor5EditorBundle\Form\Ckeditor5EditorType;

$builder->add('body', Ckeditor5EditorType::class, [
    'label' => 'Article body',
]);
{{ nowo_ckeditor5_editor_script() }}
{# or, when the editor is not visible at first (modal, collapsed panel): #}
{{ nowo_ckeditor5_editor_script({lazy: true}) }}

Requirements

Symfony PHP (minimum) Notes
7.4 8.2+ Tested in CI on 7.4
8.0, 8.1 8.4+ Symfony 8 requirement; tested in CI on 8.0 and 8.1

Composer constraints: ^7.4 \|\| ^8.0 on Symfony components. See INSTALLATION.md.

Development

Requirements: Docker (recommended), or PHP 8.2+ with Composer + pnpm locally.

make up && make install   # Docker PHP + composer + pnpm
make assets               # vite → src/Resources/public/ckeditor5-editor.js + ckeditor5-editor-loader.js
make test                 # PHPUnit
make test-ts              # Vitest + coverage script
make qa                   # cs-check + phpunit

Demos:

make -C demo up-symfony8
# http://localhost:8021 (see demo/README.md and PORT in .env)

Presets include standard, simple, minimal, emoji, typography, variables — see USAGE.md.

Documentation

Additional documentation

Tests and coverage

  • Tests: PHPUnit (unit + integration) and Vitest (logger.ts, lazy loader). Run make test / composer test and make test-ts.
  • PHP: 100%
  • TS/JS: 100% (Vitest on src/Resources/assets/src/logger.ts and ckeditor5-editor-loader.ts; see vitest.config.ts). The CKEditor build entry ckeditor5-editor.ts is excluded from the gate: it boots the real CKEditor 5 classic editor and is exercised through the demo instead (make demo-smoke and the /demo/variants pages).
  • Python: N/A

CI runs PHPUnit (matrix PHP 8.2–8.5 × Symfony 7.4 / 8.0 / 8.1), PHPStan, PHP-CS-Fixer dry-run, and Vitest coverage on pushes and pull requests.

License

MIT (bundle code). CKEditor 5 is used under its GPL / LGPL / commercial terms — this build uses OSS plugins suitable for GPL-compatible apps.