Skip to content

Quill Options

This section explains how to configure the toolbar available Fields and the available fields using quill_options.

Customize Toolbar

You can customize the toolbar by creating one or many Groups. If you create many groups, they will be separated by a space in the toolbar.

Examples

Headers side by side:

php
QuillGroup::build(
    new HeaderField(HeaderField::HEADER_OPTION_1),
    new HeaderField(HeaderField::HEADER_OPTION_2),
)

Headers + Bold/Italic separated:

php
QuillGroup::build(
    new HeaderField(HeaderField::HEADER_OPTION_1),
    new HeaderField(HeaderField::HEADER_OPTION_2),
)
QuillGroup::build(
    new BoldField(),
    new ItalicField(),
)

Available Fields

Below is the list of available fields from QuillJS (https://v2.quilljs.com/docs/formats)

FieldDescriptionAvailable options (class constants)DefaultQuillJS name
AlignFieldText alignmentALIGN_FIELD_OPTION_LEFT, ALIGN_FIELD_OPTION_CENTER, ALIGN_FIELD_OPTION_RIGHT, ALIGN_FIELD_OPTION_JUSTIFYallalign
BackgroundColorFieldText background colorarray of colors (strings)allbackground
BlockQuoteFieldBlockquote--blockquote
BoldFieldBold text--bold
CleanFieldRemove formatting--clean
CodeBlockFieldCode block--code-block
CodeFieldInline code--code
ColorFieldText colorarray of colors (strings)allcolor
DirectionFieldText directionDIRECTION_FIELD_OPTION_RTLRTLdirection
FontFieldFont familyFONT_OPTION_SANS_SERIF, FONT_OPTION_SERIF, FONT_OPTION_MONOSPACEallfont
FormulaFieldFormula (requires KaTeX)--formula
HeaderFieldSingle header levelHEADER_OPTION_1, HEADER_OPTION_21header
HeaderGroupFieldMultiple header levelsHEADER_OPTION_1 to HEADER_OPTION_6, HEADER_OPTION_NORMALallheader
ImageFieldInsert image--image
IndentFieldText indentationINDENT_FIELD_OPTION_PLUS, INDENT_FIELD_OPTION_MINUS+1indent
ItalicFieldItalic text--italic
LinkFieldInsert link--link
ListFieldListsLIST_FIELD_OPTION_ORDERED, LIST_FIELD_OPTION_BULLET, LIST_FIELD_OPTION_CHECKorderedlist
ScriptFieldSub/SuperscriptSCRIPT_FIELD_OPTION_SUB, SCRIPT_FIELD_OPTION_SUPERsubscript
SizeFieldText sizeSIZE_FIELD_OPTION_SMALL, SIZE_FIELD_OPTION_NORMAL, SIZE_FIELD_OPTION_LARGE, SIZE_FIELD_OPTION_HUGEallsize
StrikeFieldStrikethrough--strike
UnderlineFieldUnderline text--underline
VideoFieldInsert video--video

Community & Custom Fields

These fields are provided by the bundle or integrated community modules. Most of them automatically load a corresponding module.

FieldDescriptionAuto-imported moduleQuillJS name
DividerFieldHorizontal separatorDividerModuledivider
EmojiFieldEmoji pickerEmojiModuleemoji
PageBreakFieldPage break (for print)PageBreakModulepageBreak
TableFieldAdvanced table supportTableModuletable-better

TIP

If you need to add a field that is not provided by this bundle, you can create your own. See Custom Fields for more details.

Example

php
use Ehyiah\QuillJsBundle\Form\QuillType;
use Ehyiah\QuillJsBundle\DTO\QuillGroup;
use Ehyiah\QuillJsBundle\DTO\Fields\InlineField\BoldField;
use Ehyiah\QuillJsBundle\DTO\Fields\InlineField\ItalicField;
use Ehyiah\QuillJsBundle\DTO\Fields\BlockField\HeaderField;

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('myField', QuillType::class, [
            'quill_options' => [
                QuillGroup::build(
                    new BoldField(),
                    new ItalicField(),
                ),
                QuillGroup::build(
                    new HeaderField(HeaderField::HEADER_OPTION_1),
                    new HeaderField(HeaderField::HEADER_OPTION_2),
                ),
                // Add all built-in available fields at once (includes Table, Emoji, etc.)
                QuillGroup::build(
                    new ImageGalleryField(),
                ),
            ]
        ])
    ;
}