agence-adeliom/easy-block-bundle

为 EasyAdmin 提供基本块组件的 Symfony 扩展包

2.0.122 2024-05-29 09:45 UTC

README

Adeliom Quality gate

Easy Block Bundle

为 Easyadmin 提供基本的块组件。

特性

  • Easyadmin CRUD 界面用于管理块
  • Twig 函数用于渲染块

版本

使用 Symfony Flex 进行安装

添加我们的配方端点

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

使用 composer 进行安装

composer require agence-adeliom/easy-block-bundle

设置数据库

使用 doctrine 迁移

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

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

文档

集成到 EasyAdmin

前往您的仪表盘控制器,例如: 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);

        ...

用法

实体

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

CRUD 控制器

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

Twig 模板

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

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

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

创建一个新的类型

bin/console make:block:shared

事件

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);
});

许可协议

MIT

作者