agence-adeliom/easy-editor-bundle

A Symfony bundle for EasyAdmin that provide a flexible content editor

2.0.122 2024-05-29 09:45 UTC

README

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

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