Skip to content

A Symfony bundle for EasyAdmin that provide a flexible content editor

License

Notifications You must be signed in to change notification settings

agence-adeliom/easy-editor-bundle

Repository files navigation

Adeliom Quality gate

Easy Editor Bundle

Provide a flexible content editor for Easyadmin.

Features

  • Ability to create custom blocks
  • Twig extension to render the content

Versions

Repository Branch Version Symfony Compatibility PHP Compatibility Status
2.x 2.x 5.4, and 6.x 8.0.2 or higher New features and bug fixes
1.x 1.x 4.4, and 5.x 7.2.5 or higher No longer maintained

Installation with Symfony Flex

Add our recipes endpoint

{
  "extra": {
    "symfony": {
      "endpoint": [
        "https://api.github.com/repos/agence-adeliom/symfony-recipes/contents/index.json?ref=flex/main",
        ...
        "flex://defaults"
      ],
      "allow-contrib": true
    }
  }
}

Install with composer

composer require agence-adeliom/easy-editor-bundle

Documentation

Usage

Entity

class Article
{
    #[ORM\Column(name: 'content', type: \Doctrine\DBAL\Types\Types::JSON, nullable: true)]
    private $content = [];
}

CRUD Controller

class ArticleCrudController extends AbstractCrudController
{
    // Add the custom form theme
    public function configureCrud(Crud $crud): Crud
    {
        return $crud
            ->addFormTheme('@EasyEditor/form/editor_widget.html.twig')
            ;
    }

    public function configureFields(string $pageName): iterable
    {
        yield EasyEditorField::new('content');
    }
}

Twig template

{% for block in object.content %}
    {{ easy_editor_block(block) }}
{% endfor %}

Create a new type

bin/console make:block

Events

easy_editor.render_block

use Symfony\Contracts\EventDispatcher\Event;

$dispatcher->addListener('easy_editor.render_block', function (Event $event) {
    // will be executed when the easy_editor.render_block event is dispatched

    // Get
    $block = $event->getArgument('block');
    $settings = $event->getArgument('settings');

    // Set
    $event->setArgument("block", $block);
    $event->setArgument("settings", $settings);
});

License

MIT

Authors