stfalcon/tinymce-bundle
Symfony bundle that integrates the TinyMCE WYSIWYG editor. Install via Composer, publish assets, and initialize from Twig with tinymce_init(). Supports per-template config overrides (themes, toolbar, language, callbacks) and optional asset package selection.
Installation:
composer require stfalcon/tinymce-bundle:^3.0
Ensure your AppKernel.php includes:
new Stfalcon\Bundle\TinymceBundle\StfalconTinymceBundle(),
Assets Installation:
php bin/console assets:install web/
First Use Case: Add the TinyMCE editor to a form field in Twig:
{{ form_row(form.content, {'attr': {'class': 'tinymce'}}) }}
Configure basic settings in config/packages/stfalcon_tinymce.yaml:
stfalcon_tinymce:
include_jquery: false
selector: 'textarea.tinymce'
skin: 'lightgray'
theme: 'modern'
plugins: ['advlist', 'autolink', 'lists', 'link', 'image', 'charmap']
toolbar: 'undo redo | bold italic | bullist numlist outdent indent | link image'
Dynamic Configuration: Override default settings per form or entity using Twig:
{{ form_row(form.description, {
'attr': {
'class': 'tinymce',
'data-tinymce-config': {
'plugins': 'code',
'toolbar': 'bold italic | code'
}
}
}) }}
Form Integration: Use with Symfony Forms:
$builder->add('body', TextareaType::class, [
'attr' => ['class' => 'tinymce'],
'config' => [
'height' => 400,
'menubar' => false,
],
]);
Asset Management:
Customize assets by copying files from vendor/stfalcon/tinymce-bundle/Resources/public to web/bundles/stfalcon_tinymce.
API Integration: Fetch TinyMCE assets dynamically (e.g., for SPAs) via:
{{ asset('bundles/stfalcon_tinymce/tinymce.min.js') }}
defer in Twig to load TinyMCE after DOM ready:
<script src="{{ asset('bundles/stfalcon_tinymce/tinymce.min.js') }}" defer></script>
config/packages/dev/stfalcon_tinymce.yaml for debug tools).Asset Paths:
assets:install causes 404s for JS/CSS.config/packages/stfalcon_tinymce.yaml:
stfalcon_tinymce:
base_path: '%kernel.project_dir%/public/assets/tinymce'
JQuery Dependency:
include_jquery: true, ensure jQuery is loaded before TinyMCE.Configuration Overrides:
data-tinymce-config takes precedence over YAML, but invalid JSON breaks TinyMCE.php bin/console debug:config stfalcon_tinymce
Caching:
php bin/console cache:clear
tinymce is not defined (missing asset load) or Invalid configuration (malformed YAML/JSON).tinymce.min.js).Custom Plugins:
Add plugins via plugins config or load externally:
stfalcon_tinymce:
external_plugins: ['%kernel.project_dir%/public/plugins']
Then reference in Twig:
data-tinymce-config: { 'external_plugins': {'myplugin': '/plugins/myplugin.js'} }
Event Listeners: Use Symfony events to modify configs dynamically:
// src/EventListener/TinymceConfigListener.php
public function onKernelRequest(GetResponseEvent $event) {
$config = $event->getRequest()->attributes->get('tinymce_config', []);
$config['toolbar'] .= ' | mycustombutton';
$event->getRequest()->attributes->set('tinymce_config', $config);
}
Themes/Skins:
Override default themes by copying from vendor to web/bundles/stfalcon_tinymce/skins and updating skin_url in config.
data-tinymce:
document.querySelectorAll('[data-tinymce]').forEach(el => {
tinymce.init({ selector: el });
});
How can I help you explore Laravel packages today?