Skip to content

A Symfony bundle for EasyAdmin that provide basic blocks components

License

Notifications You must be signed in to change notification settings

agence-adeliom/easy-block-bundle

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Adeliom Quality gate

Easy Block Bundle

Provide a basic block component for Easyadmin.

Features

  • A Easyadmin CRUD interface to manage block
  • Twig function to render block

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-block-bundle

Setup database

Using doctrine migrations

php bin/console doctrine:migration:diff
php bin/console doctrine:migration:migrate

Without

php bin/console doctrine:schema:update --force

Documentation

Integration into EasyAdmin

Go to your dashboard controller, example : src/Controller/Admin/DashboardController.php

<?php

namespace App\Controller\Admin;

...
use App\Entity\EasyFaq\Entry;
use App\Entity\EasyFaq\Category;

class DashboardController extends AbstractDashboardController
{
    ...
    public function configureMenuItems(): iterable
    {
        ...
        yield MenuItem::linkToCrud('easy.block.admin.menu.shared_blocks', 'fa fa-file-alt', Block::class);

        ...

Usage

Entity

class Article
{
    /**
     * @ORM\ManyToOne(targetEntity=Block::class)
     * @ORM\JoinColumn(nullable=false)
     */
    private $block;
}

CRUD Controller

class ArticleCrudController extends AbstractCrudController
{
    public function configureFields(string $pageName): iterable
    {
        yield AssociationField::new('block');
    }
}

Twig template

# block is an entity object
{{ easy_block(block) }}

# render with extra data
{{ easy_block(block, extra) }}

# render by key
{{ easy_block(key, extra) }}

Create a new type

bin/console make:block:shared

Events

easy_block.render_block

use Symfony\Contracts\EventDispatcher\Event;

$dispatcher->addListener('easy_block.render_block', function (Event $event) {
    // will be executed when the easy_block.render_block event is dispatched
    
    // Get
    $block = $event->getArgument('block');
    $blockType = $event->getArgument('blockType');
    $settings = $event->getArgument('settings');
    
    // Set
    $event->setArgument("block", $block);
    $event->setArgument("blockType", $blockType);
    $event->setArgument("settings", $settings);
});

License

MIT

Authors

About

A Symfony bundle for EasyAdmin that provide basic blocks components

Topics

Resources

License

Stars

Watchers

Forks