跳到内容

显示操作

编辑此页

本文档将介绍显示操作和相关的配置选项。

路由

您可以通过删除 Admin 中相应的路由来禁用显示实体。 有关路由的更多详细信息,请参阅路由

1
2
3
4
5
6
7
8
9
10
// src/Admin/PersonAdmin.php

final class PersonAdmin extends AbstractAdmin
{
    protected function configureRoutes(RouteCollectionInterface $collection): void
    {
        // Removing the show route will disable showing entities.
        $collection->remove('show');
    }
}

组选项

当在您的显示页面中添加组时,您可以为组本身指定一些选项。

  • collapsed:目前未使用
  • class:admin 中您的组的类;默认情况下,该值设置为 col-md-12
  • fields:您的组中的字段(除非您知道自己在做什么,否则不应覆盖此项)。
  • box_class:admin 中您的组框的类;默认情况下,该值设置为 box box-primary
  • description:显示在显示组顶部的一段文本。
  • translation_domain:显示组标题的翻译域(默认情况下使用 Admin 翻译域)。

要指定选项,请按如下操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// src/Admin/PersonAdmin.php

use Sonata\AdminBundle\Admin\AbstractAdmin;
use Sonata\AdminBundle\Show\ShowMapper;

final class PersonAdmin extends AbstractAdmin
{
    protected function configureShowFields(ShowMapper $show): void
    {
        $show
            ->tab('General') // the tab call is optional
                ->with('Addresses', [
                    'class'       => 'col-md-8',
                    'box_class'   => 'box box-solid box-danger',
                    'description' => 'Lorem ipsum',
                ])
                    ->add('title')
                    // ...
                ->end()
            ->end()
        ;
    }
}

当扩展现有的 Admin 时,您可能希望删除一些字段、组或选项卡。 这是一个如何实现此目的的示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// src/Admin/PersonAdmin.php

use Sonata\AdminBundle\Show\ShowMapper;

final class PersonAdmin extends ParentAdmin
{
    protected function configureShowFields(ShowMapper $show): void
    {
        parent::configureShowFields($show);

        // remove one field
        $show->remove('field_to_remove');

        // remove a group from the "default" tab
        $show->removeGroup('GroupToRemove1');

        // remove a group from a specific tab
        $show->removeGroup('GroupToRemove2', 'Tab2');

        // remove a group from a specific tab and also remove the tab if it ends up being empty
        $show->removeGroup('GroupToRemove3', 'Tab3', true);
    }
}

注意

ParentAdmin 那么不允许是 final 的!

自定义用于在您的 Admin 类中显示对象的查询

设置 showAction 与我们在初始设置中所做的表单几乎相同。 实际上它更容易一些,因为我们只关心显示信息。 笑一笑,困难的部分已经完成了。 以下是一个 ShowAction 的工作示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// src/Admin/PostAdmin.php

use Sonata\AdminBundle\Show\ShowMapper;

final class ClientAdmin extends AbstractAdmin
{
    protected function configureShowFields(ShowMapper $show): void
    {
        // here we set the fields of the ShowMapper variable,
        // $show (but this can be called anything)
        $show

             // The default option is to display the value
             // as text (for boolean this will be 1 or 0)
            ->add('name')
            ->add('phone')
            ->add('email')

             // The boolean option is actually very cool
             // true   shows a check mark and the 'yes' label
             // false  shows a check mark and the 'no' label
            ->add('dateCafe', FieldDescriptionInterface::TYPE_BOOLEAN)
            ->add('datePub', FieldDescriptionInterface::TYPE_BOOLEAN)
            ->add('dateClub', FieldDescriptionInterface::TYPE_BOOLEAN)
        ;

    }
}

提示

要自定义显示字段的显示标签,您可以使用 label 选项

1
$show->add('name', null, ['label' => 'UserName']);

将此选项设置为 false 将使标签为空。

设置自定义显示模板 (非常有用)

您需要做的第一件事是在 app/config/config/yml 中定义它

1
2
3
4
5
6
7
# config/packages/sonata_admin.yaml

sonata_admin:
    title: Acme
    title_logo: img/logo_small.png
    templates:
        show: '@App/Admin/display_client.html.twig'

一旦您定义了此项,Sonata Admin 将在以下位置查找它

templates/Admin/display_client.html.twig

现在您已经告诉 Sonata Admin 在哪里找到模板,是时候在那里放置一个模板了。

推荐的开始方式是复制默认模板,并将其粘贴到新位置。

这确保了您可以更新 Sonata Admin 并保留您的所有辛勤工作。

原始模板可以在以下位置找到

vendor/sonata-project/admin-bundle/src/Resources/views/CRUD/base_show.html.twig

现在您已经有了默认模板的副本,请检查以确保它能正常工作。

这项工作,包括代码示例,均根据 Creative Commons BY-SA 3.0 许可获得许可。
目录
    版本