显示操作
本文档将介绍显示操作和相关的配置选项。
路由
您可以通过删除 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 许可获得许可。