zicht/admin-bundle

Symfony 的管理工具

安装数: 28,871

依赖项: 4

建议者: 0

安全性: 0

星标: 3

关注者: 2

分支: 0

开放问题: 3

类型:symfony-bundle


README

提供与 SonataAdminBundle 集成的工具。

启用 dump-role-hierarchy

为了使此命令提供实际的角色列表,请将以下内容添加到您的 sonata_admin.yml

parameters:
    sonata.admin.security.handler.role.class: Zicht\Bundle\AdminBundle\Security\Handler\RoleSecurityHandler

sonata_admin:
    security:
        handler: sonata.admin.security.handler.role

覆盖 Menu-events 以提供其他主机

将以下配置添加到 config/zicht_admin.yml 以覆盖 AdminEvents::MENU_EVENT 并更改 URL 以匹配列表中的项。

zicht_admin:
    menu:
        hosts:
            - site.nl.dev
            - site.nl.dev3.zicht.intern
            - a.site.nl

复制实体

要复制实体,请添加以下代码

  1. 在您想要复制的实体的管理中添加路由

    protected function configureRoutes(RouteCollectionInterface $collection): void
    {
        $collection->add('duplicate');
    }
    
  2. templates/bundles/SonataAdminBundle/CRUD/edit.html.twig 中添加复制按钮

    {% if admin.hasroute('duplicate') %}
        <a class="btn btn-info" href="{{ admin.generateObjectUrl('duplicate', object) }}">{{ 'admin.duplicate.text_button'|trans }}</a>
    {% endif %}
    

示例请见 https://github.com/zicht/zestor.nl/pull/155/files

覆盖实体

要覆盖实体的内容(复制后,请参阅上面章节),请添加以下代码

  1. 在管理中添加路由,使 configureRoute 方法变为
    protected function configureRoutes(RouteCollectionInterface $collection): void
    {
        $collection->add('duplicate');
        $collection->add('override');
    }
    
  2. 在实体中创建字段 copiedFrom(及其 getter 和 setter)。
    #[ORM\ManyToOne(targetEntity: Page::class)]
    #[ORM\JoinColumn(referencedColumnName: 'id', onDelete: 'SET NULL')]
    private ?Page $copiedFrom;
    
  3. 在实体的管理中添加覆盖按钮
    if ($this->getSubject()->getCopiedFrom()) {
        $formMapper
            ->tab('admin.tab.schedule_publication')
                ->add(
                    'copiedFrom',
                    ButtonType::class,
                    [
                        'required' => false,
                        'help' => $this->trans('admin.help.override', ['%copied_from%' => $this->getSubject()->getCopiedFrom()]),
                        'buttons' => [
                            'override' => [
                                'label' => 'admin.override.text_button',
                                'style' => 'info',
                                'route' => 'override',
                            ],
                        ],
                    ]
                )
                ->end()
            ->end();
    }
    

示例请见 https://github.com/zicht/zestor.nl/pull/155/files

快速列表

快速列表是一个自动完成功能。在 CMS 中,您可以将此作为额外的块放置在仪表板上以搜索实体。还可以在管理实体中使用 AutocompleteType 类。

配置

在您的项目中创建 templates/admin/block_admin.html.twig 并添加以下内容

{% extends sonata_block.templates.block_base %}

{% block block %}
    {{ render(controller('Zicht\\Bundle\\AdminBundle\\Controller\\QuicklistController::quicklistAction')) }}
{% endblock %}

config/packages/zicht/admin.yaml 中,您可以选择添加多个要搜索的仓库。

示例

zicht_admin:
    quicklist:
        App\Entity\Page\BiographyPage:
            repository: 'App\Entity\Page\BiographyPage'
            # choose multiple fields to search in...
            fields: ['firstName', 'lastName', 'profession']
            title: Bio
        App\Entity\Page\ArticlePage:
            repository: 'App\Entity\Page\ArticlePage'
            # ...or just one field
            fields: ['title']
            title: Article
        App\Entity\Slide:
            repository: 'App\Entity\Slide'
            fields: ['title', 'internalTitle', 'image']
            title: Slide
            # by default returns 15 results if not configured explicitly
            max_results: 100

实现示例

namespace App\Admin;

use App\Entity\Page\BiographyPage;
use Sonata\AdminBundle\Admin\AbstractAdmin;
use Sonata\AdminBundle\Form\FormMapper;
use Zicht\Bundle\AdminBundle\Form\AutocompleteType;

class FooAdmin extends AbstractAdmin
{
    protected function configureFormFields(FormMapper $form): void
    {
        $form
            ->add('somePropertyNameHere', AutocompleteType::class, [
                'repo' => BiographyPage::class,
            ]);
    }
}

维护者