Installation:
composer require egeloen/ckeditor-bundle
Ensure Egelon\CKEditorBundle\EgelonCKEditorBundle::class is registered in config/bundles.php.
Basic Form Integration:
use Egelon\CKEditorBundle\Form\Type\CKEditorType;
// In your form builder
$builder->add('content', CKEditorType::class, [
'config' => [
'toolbar' => 'Basic',
],
]);
First Use Case:
Attach the form type to a field (e.g., Article entity's body property) and render it in a template:
{{ form_row(form.content) }}
config/packages/egelon_ckeditor.yaml (default config)Resources/doc/usage.md (for advanced options)Egelon\CKEditorBundle\Form\Type\CKEditorType.php (core class)Dynamic Toolbar Configuration:
$builder->add('description', CKEditorType::class, [
'config' => [
'toolbar' => [
['bold', 'italic', 'underline'],
['numberedlist', 'bulletedlist'],
],
],
]);
Asset Management:
public/bundles/egelonckeditor/ (auto-installed via bundle).web/bundles/egelonckeditor/ and modifying.Entity Integration:
// Article.php
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
#[ORM\Entity]
class Article {
#[ORM\Column(type: 'text')]
#[Assert\NotBlank]
private $body;
}
Twig Integration:
{% form_theme form _self %}
{% block _ckeditor_widget %}
{{ parent() }}
<script>
CKEDITOR.replace('{{ form.vars.id }}', {{ form.vars.config|json_encode }});
</script>
{% endblock %}
FormBuilder via laravel-bridge or wrap the bundle in a Laravel service provider.Assert\Length or custom validators for content rules.Outdated CKEditor Version:
<script src="https://cdn.ckeditor.com/ckeditor5/40.0.0/classic/ckeditor.js"></script>
Asset Path Conflicts:
public/bundles/egelonckeditor/ permissions.php artisan vendor:publish --tag=egelon-ckeditor-assets to republish assets.Form Theme Overrides:
{% form_theme form _self %} before custom blocks.CKEDITOR is not defined (missing JS) or 404 on asset paths.dump($form->getConfig());
Custom Config Providers:
// services.yaml
services:
App\CKEditor\ConfigProvider:
tags: [egelon_ckeditor.config_provider]
Implement Egelon\CKEditorBundle\ConfigProviderInterface.
Plugin Integration:
egelon_ckeditor:
config:
extraPlugins: 'widget,uploadimage'
Laravel Service Provider:
// AppServiceProvider.php
public function boot() {
$this->app->make('egelon_ckeditor.twig.extension')->addToEnvironment(
$this->app['twig']
);
}
// webpack.mix.js
mix.copy('node_modules/ckeditor4/ckeditor.js', 'public/js/ckeditor.js');
filebrowserUploadUrl in config for custom upload handlers (e.g., Laravel’s store method).Resources/public/ckeditor/lang/ and reference them in config:
egelon_ckeditor:
config:
language: 'fr'
How can I help you explore Laravel packages today?