1. Installation

If you are using Symfony4 you will need to make some adjustments, if not you can skip to “Install SonataFormatterBundle”.

First you will need to add a line to your composer.json:

1
2
3
"replace": {
    "egeloen/ckeditor-bundle": "*"
}

And after that you need to install FOSCKEditorBundle.

Install SonataFormatterBundle:

1
composer require sonata-project/formatter-bundle

Register the bundles in bundles.php file:

// config/bundles.php

return [
    // ...
    Knp\Bundle\MarkdownBundle\KnpMarkdownBundle::class => ['all' => true],
    FOS\CKEditorBundle\FOSCKEditorBundle::class => ['all' => true],
    Sonata\FormatterBundle\SonataFormatterBundle::class => ['all' => true],
];

You have to install Ckeditor:

1
bin/console ckeditor:install

and install Symfony assets:

1
bin/console assets:install

2. Configuration

Add Twig configuration:

1
2
3
4
5
6
7
8
# config/packages/twig.yaml

twig:
    debug:            '%kernel.debug%'
    strict_variables: '%kernel.debug%'

    form_themes:
        - '@SonataFormatter/Form/formatter.html.twig'

Now add SonataFormatter configuration:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# config/packages/sonata.yaml

sonata_formatter:
    default_formatter: text
    formatters:
        markdown:
            service: sonata.formatter.text.markdown
            extensions:
                - sonata.formatter.twig.control_flow
                - sonata.formatter.twig.gist
        #        - sonata.media.formatter.twig #keep this commented unless you are using media bundle.

        text:
            service: sonata.formatter.text.text
            extensions:
                - sonata.formatter.twig.control_flow
                - sonata.formatter.twig.gist
        #        - sonata.media.formatter.twig

        rawhtml:
            service: sonata.formatter.text.raw
            extensions:
                - sonata.formatter.twig.control_flow
                - sonata.formatter.twig.gist
        #        - sonata.media.formatter.twig

        richhtml:
            service: sonata.formatter.text.raw
            extensions:
                - sonata.formatter.twig.control_flow
                - sonata.formatter.twig.gist
        #        - sonata.media.formatter.twig

        twig:
            service: sonata.formatter.text.twigengine
            extensions: [] # Twig formatter cannot have extensions