nowo-tech / ckeditor5-editor-bundle
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
Type:symfony-bundle
pkg:composer/nowo-tech/ckeditor5-editor-bundle
Requires
- php: >=8.2 <8.6
- symfony/config: ^6.4 || ^7.0 || ^8.0
- symfony/dependency-injection: ^6.4 || ^7.0 || ^8.0
- symfony/form: ^6.4 || ^7.0 || ^8.0
- symfony/framework-bundle: ^6.4 || ^7.0 || ^8.0
- symfony/http-foundation: ^6.4 || ^7.0 || ^8.0
- symfony/http-kernel: ^6.4 || ^7.0 || ^8.0
- symfony/routing: ^6.4 || ^7.0 || ^8.0
- symfony/security-csrf: ^6.4 || ^7.0 || ^8.0
- symfony/twig-bundle: ^6.4 || ^7.0 || ^8.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- phpstan/extension-installer: ^1.0
- phpstan/phpstan: ^2.0
- phpstan/phpstan-phpunit: ^2.0
- phpstan/phpstan-symfony: ^2.0
- phpunit/phpunit: ^11.0
- rector/rector: ^2.0
- symfony/yaml: ^6.4 || ^7.0 || ^8.0
README
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 worker mode: Supported for production-style demo runs (worker-enabled Caddyfile). Development demos use classic php_server without worker so PHP/Twig changes apply on refresh — see docs/DEMO-FRANKENPHP.md.
Features
- Named YAML profiles (
toolbar,min_height,form_theme,preset,theme, optionalupload_url). - Twig themes for common layouts (Bootstrap 3–5, Foundation, Tailwind 2, table layout).
nowo_ckeditor5_editor_asset_path()Twig helper for published assets.- pnpm + Vite frontend; Vitest coverage on shared utilities (
logger.ts). - Dockerfile + Makefile aligned with other Nowo bundles.
- Demos: Symfony 7 & 8 under
demo/(FrankenPHP).
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_config: simple configs: 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', ]);
<script src="{{ asset(nowo_ckeditor5_editor_asset_path('ckeditor5-editor.js')) }}"></script>
Documentation
Additional documentation
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 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.
Tests and coverage
| Layer | Target / notes |
|---|---|
| PHP | 100% statement coverage on bundle src/ (PHPUnit + Clover); enforced by scripts/verify-clover-100.php. Run composer test-coverage or make test-coverage. |
| TypeScript | Vitest thresholds on src/Resources/assets/src/logger.ts (see vitest.config.ts). Run pnpm run test:coverage or make test-ts. |
CI runs PHPUnit (matrix PHP × Symfony), 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.