English spoken conference

Symfony 5: The Fast Track

A new book to learn about developing modern Symfony 5 applications.

Support this project

Plugin support

Plugin support

The bundle offers you the ability to manage extra plugins. To understand how it works, you will enable the Wordcount plugin for our CKEditor widget.

Install the Plugin

First, you need to download and extract it in the web directory. For that, you have two possibilities:

  1. Directly put the plugin in the web directory (/web/ckeditor/plugins/ for example).
  2. Put the plugin in the /Resources/public/ directory of any of your bundles.

Register the Plugin

In order to load it, you need to specify its location. For that, you can do it globally in your configuration:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# app/config/config.yml
fos_ck_editor:
    default_config: my_config
    configs:
        my_config:
            extraPlugins: "wordcount"
    plugins:
        wordcount:
            path:     "/bundles/mybundle/wordcount/" # with trailing slash
            filename: "plugin.js"

Or you can do it in your widget:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
$builder->add('field', 'ckeditor', array(
    'config' => array(
        'extraPlugins' => 'wordcount',
    ),
    'plugins' => array(
        'wordcount' => array(
            'path'     => '/bundles/mybundle/wordcount/', // with trailing slash
            'filename' => 'plugin.js',
        ),
    ),
));

Plugin dependency

Once your plugin is installed and registered, you will also need to install and register these dependencies. Hopefully, the wordcount has no extra dependency but other plugin can require extra ones. So if it is the case, you need to redo the process for them and so on.

Plugin icon

If you don't configure a built-in toolbar or a custom toolbar, the plugin icon should be visible automatically according to the plugin configuration otherwise, it is your responsibility to configure it. Take a look to this documentation.

This work, including the code samples, is licensed under a Creative Commons BY-SA 3.0 license.