建立一个管理后台
建立一个管理后台
向数据库添加即将举行的会议是项目管理员的工作。一个管理后台是网站的一个受保护的部分在哪里项目管理员可以管理网站数据,温和的反馈意见,以及更多。
我们如何创建这个快?通过使用一个包,能够生成一个管理员后端基于项目的模型。EasyAdmin非常适合该法案。
安装更多的依赖关系
即使webapp
包自动添加许多漂亮的包,对于一些更具体的功能,我们需要添加更多的依赖关系。我们如何添加更多的依赖?通过作曲家。除了“普通”作曲家包,我们将与两个“特别”类型的包:
- ob娱乐下载Symfony组件:包实现核心功能和低层次抽象,大多数应用程序需要(梅勒,路由、控制台、HTTP客户端缓存,…);
- ob娱乐下载Symfony包:包添加高级特性或提供集成与第三方库(包大多是由社区提供)。欧宝体育平台怎么样
让我们添加EasyAdmin作为一个项目依赖关系:
1
美元ob娱乐下载symfony作曲家要求“管理:^ 4”
管理
是一个别名吗easycorp / easyadmin-bundle
包中。
别名不是一个作曲家的特性,但是一个概念Symfony提供了使你的生活更容易。ob娱乐下载别名是快捷键为流行的作曲家包。想要一个ORM为您的应用程序吗?需要orm
。想发展一个API ?需要api
。这些别名是自动解析到一个或多个正则作曲家包。他们是固执己见的Symfony核心团队所作的选择。ob娱乐下载
另一个整洁的特性是,你总是可以省略了ob娱乐下载
供应商。需要缓存
而不是ob娱乐下载symfony /缓存
。
提示
你还记得我们提到一个作曲家插件命名ob娱乐下载symfony / flex
过吗?别名是它的一个特性。
配置EasyAdmin
EasyAdmin自动生成一个管理区域为您的应用程序基于特定的控制器。
开始EasyAdmin,让我们生成一个“网络管理员仪表板”将网站的主要入口点来管理数据:
1
美元ob娱乐下载symfony控制台:admin:仪表板
接受默认的答案创建以下控制器:
按照惯例,所有管理控制器存储在自己的应用程序控制器\ \管理
名称空间。
访问生成管理后台/管理
配置的index ()
方法;你可以改变任何你喜欢的网址:
繁荣!我们有一个漂亮的管理界面层,可以定制我们的需要。
下一步是创建控制器来管理会议和评论。
在仪表板控制器,您可能已经注意到configureMenuItems ()
方法有一个评论添加链接到“尘埃”。CRUD是一个缩写“创建、读取、更新和删除”,这四个基本操作你想做的任何实体。这正是我们想要为我们管理执行;EasyAdmin甚至把它也照顾下一层次的搜索和过滤。
让我们生成一个CRUD会议:
1
美元ob娱乐下载symfony控制台:admin: crud
选择1
为会议和创建一个管理界面使用的默认设置其他问题。应该生成下列文件:
做同样的评论:
1
美元ob娱乐下载symfony控制台:admin: crud
最后一步是会议链接和评论管理仪表板尘埃:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 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;@@ -40 7 + 42 8 @@类DashboardController AbstractDashboardController延伸公共函数configureMenuItems (): iterable {——收益率菜单项::linkToDashboard(“仪表板”,“fa fa-home”);——/ /收益率菜单项::linkToCrud(‘标签’,‘fas fa-list’, EntityClass::类);+收益率菜单项::linktoRoute(“回网站”,“fas fa-home”,“首页”);+收益率菜单项::linkToCrud(“会议”、“fas fa-map-marker-alt”,会议::类);+收益率菜单项::linkToCrud(“评论”、“fas fa-comments”,备注::类);}}
我们覆盖了configureMenuItems ()
方法添加菜单项相关的会议和评论和图标添加一个网站链接回主页。
EasyAdmin公开API来缓解通过链接到实体尘埃子菜单:linkToRoute ()
方法。
主仪表板页面是空的。在这里你可以显示一些统计数据,或任何相关的信息。我们没有任何重要的显示,让我们重定向到会议列表:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
- - - / src /控制器/ Admin / DashboardController.php+ + + b / src /控制器/ Admin / DashboardController.php@@ 7,6 + 7,7 @@使用App \实体\会议;使用包EasyCorp \ \ EasyAdminBundle \ Config \仪表板;使用包EasyCorp \ \ EasyAdminBundle \ Config \子菜单;控制器使用EasyCorp \包\ EasyAdminBundle \ \ AbstractDashboardController;路由器+使用EasyCorp \包\ EasyAdminBundle \ \ AdminUrlGenerator;组件使用ob娱乐下载Symfony \ \ HttpFoundation \反应;使用Syob娱乐下载mfony \组件\路由\注释\路线;@@ -15 7 + 16 10 @@类DashboardController延伸AbstractDashboardController #(路线(“/管理”,名字:“admin”)]公共函数指数():反应{——返回父:指数();+ $ routeBuilder = $ this - >容器- > (AdminUrlGenerator::类);+ $ url = $ routeBuilder - > setController (ConferenceCrudController::类)- > generateUrl ();++ $ this - >返回重定向($ url);/ /选项1。你可以让你的仪表板页面重定向到一些常见的后端/ /
当显示实体关系(会议与评论),EasyAdmin试图使用一个字符串表示的会议。默认情况下,它使用一个约定使用名称和主键的实体(如会议# 1
如果没有定义“魔法”的实体__toString ()
方法。使显示更有意义,添加这样一个方法会议
类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
- - - / src /实体/ Conference.php+ + + b / src /实体/ Conference.php@@ -32、6 + 32 $ this - > 11 @@类会议评论= new ArrayCollection ();}+公共职能__toString():字符串+ {+ $ this - >返回城市。“。$ this - >;+}+公共函数getId (): int ?{返回$ this - > id;
的相同吗评论
类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
- - - / src /实体/ Comment.php+ + + b / src /实体/ Comment.php@@ -32 32 6 + 11 @@类评论# [ORM \列(类型:字符串,长度:255年,可以为空:true)]私人photoFilename美元;+公共职能__toString():字符串+ {+返回(字符串)$ this - > getEmail ();+}+公共函数getId (): int ?{返回$ this - > id;
你现在可以添加/修改/删除会议直接从管理后台。玩和添加至少一个会议。
添加了一些备注,没有照片。手动设置的日期现在;我们会填写createdAt
自动列在后面的步骤。
定制EasyAdmin
默认管理员后台运行良好,但它可以定制在很多方面改善经验。让我们做一些简单的修改评论实体展示一些可能性:
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 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.php15 @@ @@ 3 7 + 3名称空间的应用程序控制器\ \管理;使用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延伸AbstractCrudController{@@ -12年,14 + 20,44 @@类CommentCrudController扩展AbstractCrudController返回评论::类;}- / *+公共职能configureCrud Crud美元(Crud): Crud+ {+返回crud美元+ - > setEntityLabelInSingular(会议评论)+ - > setEntityLabelInPlural(会议评论)+ - > setSearchFields([‘作者’,‘文本’,'邮件'])+ - > setDefaultSort ([' createdAt ' = > ' DESC '])+;+}++公共职能configureFilters(过滤器过滤器美元):过滤器+ {美元+返回过滤器+ - >添加(EntityFilter::新(会议))+;+}+公共函数configureFields pageName美元(string): iterable {——返回- IdField::新(id),——文本框::新(“标题”),- TextEditorField::新(描述),-);+收益率AssociationField::新(会议);+收益率TextField::新(“作者”);+收益率EmailField::新(电子邮件);+收益率TextareaField::新(文本)+ - > hideOnIndex ()+;+收益率TextField::新(“photoFilename”)+ - > onlyOnIndex ()+;++ $ createdAt = DateTimeField::新(createdAt) - > setFormTypeOptions ([+“html5”= >真的,+ '年' = >范围(日期(Y),日期(Y) + 5),+“部件”= >“single_text”,+));+如果(Crud:: PAGE_EDIT = = = $ pageName) {+ $ createdAt - > setFormTypeOption收益率(“禁用”,真正的);+其他}{+收益率createdAt美元;+}}- * /}
自定义评论
部分,清单中明确的字段configureFields ()
法让我们命令他们我们想要的方式。一些字段被进一步配置,比如隐藏文本字段的索引页面。
的configureFilters ()
方法定义了哪些过滤器暴露在搜索字段。
这些定制只是一个小介绍EasyAdmin的可能性。
玩admin,过滤会议上的言论,例如通过电子邮件或搜索评论。唯一的问题是,任何人都可以访问后端。别担心,我们将确保它在以后的步骤。
1
美元ob娱乐下载symfony psql - c运行“截断会议重启身份级联”
要进一步