eductool/quill-editor-bundle

Symfony bundle providing a Quill.js form field.

Installs: 136

Dependents: 0

Suggesters: 0

Security: 0

Stars: 1

Watchers: 0

Forks: 0

Open Issues: 0

Type:symfony-bundle

pkg:composer/eductool/quill-editor-bundle

v1.0.0 2025-10-05 07:01 UTC

This package is auto-updated.

Last update: 2026-01-05 07:59:10 UTC


README

A lightweight Symfony bundle that exposes the Quill.js rich text editor as a reusable form field.

Installation

composer require eductool/quill-editor-bundle

If you are not using Symfony Flex, register the bundle manually in config/bundles.php:

return [
    Eductool\QuillEditorBundle\QuillEditorBundle::class => ['all' => true],
];

Install the bundle assets so the helper script is available under public/:

php bin/console assets:install --symlink --relative

Configuration

The bundle works out of the box. You may customise the defaults in config/packages/quill_editor.yaml:

quill_editor:
    include_cdn: true
    cdn:
        version: '1.3.7'
        script: null # use bundled default when null
        stylesheets:
            snow: null
            bubble: null
    default_options:
        theme: snow
        placeholder: 'Compose an epic...'
        read_only: false
        height: 200
        auto_initialize: true
        modules:
            toolbar:
                - [bold, italic, underline, strike]
                - [blockquote, code-block]
  • include_cdn: toggle automatic loading of Quill assets from jsDelivr. Set to false if you manage assets yourself.
  • modules: merged with the bundle defaults, so you can tweak only the portions you need.
  • auto_initialize: set to false to defer editor creation and initialise manually via JavaScript (window.QuillEditorBundle.initialize('field_id')).

Usage

The bundle automatically registers a Twig form theme. You can use the field type like any other Symfony field:

use Eductool\QuillEditorBundle\Form\QuillEditorType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;

$builder
    ->add('content', QuillEditorType::class, [
        'label' => 'Content',
        'placeholder' => 'Start writing...'
    ])
    ->add('save', SubmitType::class);

The submitted value is HTML. You may convert it to Delta format in your own code if required.

Manual Initialisation

When auto_initialize is disabled, call the helper to create the editor once your own scripts are ready:

window.QuillEditorBundle.initialize('form_field_id').then((instance) => {
    // instance is the Quill editor
});

You can also retrieve an existing instance:

const quill = window.QuillEditorBundle.getInstance('form_field_id');

Browser Support

The helper script relies on evergreen browser features (Promises, Map). For legacy support you should include appropriate polyfills before loading the field.

License

Released under the MIT License.