设置管理后端
设置管理后端
将即将召开的会议添加到数据库是项目管理员的工作。一个管理后台网站的受保护部分在哪里项目管理员可以管理网站数据,适度反馈提交,和更多。
我们如何才能快速创造这些?通过使用一个能够生成基于项目模型的管理后端包。EasyAdmin完全符合要求。
安装更多依赖项
即使webapp
包自动添加了许多不错的包,对于一些更具体的特性,我们需要添加更多的依赖项。如何添加更多依赖项?通过作曲家。除了“常规的”Composer包,我们还将使用两种“特殊的”包:
- ob娱乐下载Symfony组件:实现大多数应用程序需要的核心功能和低级抽象的包(路由、控制台、HTTP客户端、邮件、缓存等);
- ob娱乐下载Symfony包:添加高级特性或提供与第三方库集成的包(包主要由社区贡献)。欧宝体育平台怎么样
让我们添加EasyAdmin作为项目依赖项:
1
$ob娱乐下载交响乐作曲家要求“管理:^ 4”
管理
的别名吗easycorp / easyadmin-bundle
包中。
别名不是Composer的特性,而是Symfony提供的一个概念,使您的生活更轻松。ob娱乐下载别名是流行的Composer包的快捷方式。想要应用程序的ORM ?需要orm
.想要开发一个API?需要api
.这些别名将自动解析为一个或多个常规Composer包。它们是Symfony核心团队做出的主观选择。ob娱乐下载
的另一个整洁的特性是您总是可以省略ob娱乐下载
供应商。需要缓存
而不是ob娱乐下载symfony /缓存
.
提示
你还记得我们提到的一个Composer插件吗ob娱乐下载symfony / flex
过吗?别名是其特点之一。
配置EasyAdmin
EasyAdmin根据特定的控制器自动为应用程序生成一个管理区域。
要开始使用EasyAdmin,让我们生成一个“web管理仪表板”,这将是管理网站数据的主要入口点:
1
$ob娱乐下载Symfony控制台make:admin:dashboard
接受默认答案将创建以下控制器:
按照惯例,所有管理控制器都存储在它们自己的控制器下应用程序控制器\ \管理
名称空间。
访问生成的管理后端/管理
由index ()
方法;你可以将URL更改为任何你喜欢的:
繁荣!我们有一个漂亮的管理界面外壳,准备自定义,以满足我们的需要。
下一步是创建控制器来管理会议和评论。
在仪表板控制器中,您可能已经注意到configureMenuItems ()
方法,其中有一个关于添加链接到“crud”的注释。CRUD是“创建、读取、更新和删除”的首字母缩写,这是你想在任何实体上执行的四个基本操作。这正是我们希望管理员为我们执行的任务;EasyAdmin甚至还负责搜索和过滤,将其提升到了一个新的水平。
让我们为会议生成一个CRUD:
1
$ob娱乐下载Symfony控制台make:admin:crud
选择1
为会议创建管理界面,并为其他问题使用默认值。应该生成以下文件:
评论也是如此:
1
$ob娱乐下载Symfony控制台make:admin:crud
最后一步是将会议和评论管理crud链接到仪表板:
12 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 20 21 22
——/ src /控制器/ Admin / DashboardController.php+ + + b / src /控制器/ Admin / DashboardController.php@@ -2,6 +2,8 @@名称空间的应用程序控制器\ \管理;+使用App \实体\评论;+使用App \实体\会议;使用包EasyCorp \ \ EasyAdminBundle \ Config \仪表板;使用包EasyCorp \ \ EasyAdminBundle \ Config \子菜单;控制器使用EasyCorp \包\ EasyAdminBundle \ \ AbstractDashboardController;@@类DashboardController扩展AbstractDashboardController公共函数configuremuitems():可迭代{- yield MenuItem::linkToDashboard('Dashboard', 'fa fa-home');- // yield MenuItem::linkToCrud('The Label', 'fas fa-list', EntityClass::class);+ yield MenuItem::linktoRoute('回到网站','fas fa-home', '首页');+ yield MenuItem::linkToCrud('会议','fas fa-map-marker-alt',会议::类);+ yield MenuItem::linkToCrud('Comments', 'fas fa-comments', Comment::class);}}
我们已经推翻了configureMenuItems ()
方法添加带有会议和评论相关图标的菜单项,并添加返回网站主页的链接。
EasyAdmin公开了一个API来简化通过子菜单:linkToRoute ()
方法。
主仪表板页面目前是空的。在这里可以显示一些统计数据或任何相关信息。由于我们没有任何重要的东西要显示,让我们重定向到会议列表:
12 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 20 21 22
——/ src /控制器/ Admin / DashboardController.php+ + + b / src /控制器/ Admin / DashboardController.php@@ -7,6 +7,7 @@使用App\Entity\Conference;使用包EasyCorp \ \ EasyAdminBundle \ Config \仪表板;使用包EasyCorp \ \ EasyAdminBundle \ Config \子菜单;控制器使用EasyCorp \包\ EasyAdminBundle \ \ AbstractDashboardController;路由器+使用EasyCorp \包\ EasyAdminBundle \ \ AdminUrlGenerator;组件使用ob娱乐下载Symfony \ \ HttpFoundation \反应;使用Syob娱乐下载mfony \组件\路由\注释\路线;@@ -15,7 +16,10 @@ class DashboardController extends AbstractDashboardController #[路由('/admin',名称:'admin')]公共函数索引():Response {- return parent::index();+ $routeBuilder = $this->container->get(AdminUrlGenerator::class);+ $url = $routeBuilder->setController(ConferenceCrudController::class)->generateUrl();++返回$this->重定向($url);//选项1。您可以使仪表板重定向到后端//的一些公共页面
当显示实体关系(会议链接到注释)时,EasyAdmin尝试使用会议的字符串表示。默认情况下,它使用使用实体名称和主键的约定(如会议# 1
)如果实体没有定义“魔力”__toString ()
方法。控件上添加这样的方法可以使显示更有意义会议
类:
12 3 4 5 6 7 8 9 10 11 12 13 14
——/ src /实体/ Conference.php+ + + b / src /实体/ Conference.php@@ -32,6 +32,11 @@ class Conference $this->comments = new ArrayCollection();}+公共函数__toString():字符串+ {+返回$this->城市。“。$ this - >;+}+公共函数getId(): ?int{返回$this->id;
对评论
类:
12 3 4 5 6 7 8 9 10 11 12 13 14
——/ src /实体/ Comment.php+ + + b / src /实体/ Comment.php@@ -33,6 +33,11 @@ class注释#[ORM\列(长度:255,nullable: true)] private ?string $photoFilename = null;+公共函数__toString():字符串+ {+ return (string) $this->getEmail();+}+公共函数getId(): ?int{返回$this->id;
您现在可以直接从管理后端添加/修改/删除会议。尝试一下,至少增加一个会议。
添加一些没有照片的评论。现在手动设置日期;我们将填写createdAt
列在后面的步骤中自动执行。
定制EasyAdmin
默认的管理后端工作得很好,但是可以通过多种方式进行自定义以改善体验。让我们对Comment实体做一些简单的更改,以演示一些可能性:
12 34 56 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
——/ src /控制器/ Admin / CommentCrudController.php+ + + b / src /控制器/ Admin / CommentCrudController.php@@ -3,7 +3,15 @@名称空间的应用程序控制器\ \管理;使用App \实体\评论;+使用EasyCorp \ \ EasyAdminBundle \ Config \ Crud捆绑销售;+使用包EasyCorp \ \ EasyAdminBundle \ Config \过滤器;控制器使用EasyCorp \包\ EasyAdminBundle \ \ AbstractCrudController;+使用EasyCorp \包\ EasyAdminBundle \ \ AssociationField领域;+使用EasyCorp \包\ EasyAdminBundle \ \ DateTimeField领域;+使用EasyCorp \包\ EasyAdminBundle \ \ EmailField领域;+使用EasyCorp \包\ EasyAdminBundle \ \ TextareaField领域;+使用EasyCorp \ \ EasyAdminBundle \字段\ TextField捆绑销售;+使用EasyCorp \包\ EasyAdminBundle \滤波器\ EntityFilter;类CommentCrudController extends AbstractCrudController{@@ -12,14 +20,44 @@类CommentCrudController extends AbstractCrudController return Comment::类;}- / *+公共函数configurerd (Crud $ Crud): Crud+ {+返回$crud+ ->setEntityLabelInSingular('Conference Comment')+ -> setentitylabelin复数('会议评论')+ ->setSearchFields(['author', 'text', 'email'])+ ->setDefaultSort(['createdAt' => 'DESC'])+;+}++公共函数configureFilters(Filters $ Filters):过滤器+ {+返回$filters+ - - - - - - >添加(EntityFilter::新(会议))+;+}+公共函数configureFields(字符串$pageName):可迭代{-返回[- IdField::新(id),——文本框::新(“标题”),- TextEditorField::新(描述),-);+ yield AssociationField::new('conference');+ yield TextField::new('author');+ yield EmailField::new('email');textareaffield::new('text')+ - > hideOnIndex ()+;TextField::new('photoFilename')+ - > onlyOnIndex ()+;++ $createdAt = DateTimeField::new('createdAt')->setFormTypeOptions([+ 'html5' => true,+ 'years' => range(日期('Y'),日期('Y') + 5),+ 'widget' => 'single_text',+));+ if (Crud::PAGE_EDIT === $pageName) {+ yield $createdAt->setFormTypeOption('disabled', true);+}其他{+ yield $createdAt;+}}- * /}
要自定义评论
类中显式列出字段configureFields ()
方法可以让我们按照我们想要的方式排列它们。有些字段需要进一步配置,比如在索引页上隐藏文本字段。
的configureFilters ()
方法定义在搜索字段顶部公开哪些筛选器。
这些自定义只是EasyAdmin提供的可能性的一个小介绍。
使用管理员,通过会议过滤评论,或者通过电子邮件搜索评论。唯一的问题是任何人都可以访问后端。别担心,我们会在以后的步骤中保护它。
1
$ob娱乐下载Symfony运行PSQL -c“截断会议重新启动身份级联”
要进一步