使用EasyAdminBundle管理端-Symfony5全面开发
我们打开symfony.sh
这个网站,搜索admin
,在第二个easyadmin-bundle
是官方为我们提供的一个管理端的包,我们安装这个包。回到项目,打开控制台,输入composer req admin
,安装完成后,我们查看一下这个包为我们添加的命令行,输入symfony console
,在make命令下,为我们添加了3个命令行。分别是make:admin:crud
,make:admin:dashboard
和make:admin:migration
。
我们看第一个,第一个就是为我们添加管理端的CRUD操作页面的命令行,第二个命令行是为我们添加一个控制台的首页的命令行,我们使用第二个命令来为我们的管理端添加一个控制台首页。输入symfony console make:admin:dashboard
,控制台的Controller,我们使用默认的就可以了,让我们选择Controller类所属于的文件夹,我们选择默认。命令行为我们在src/Controller/Admin目录中创建了DashboardController类。
我们查看这个类,在DashboardController中,它为我们添加了一个路由,路由的名称是admin,路由的路径是/admin。Symfony还提供了另外一个命令行 来帮助我们查看项目中的所有路由。
我们打开控制台,输入symfony console debug:route
,回车。这样在项目中所有可用的路由都显示出来了。
第一列是路由的名称,第二列是路由所使用的方法,第三列是路由所使用的协议,第四列是路由的主机名,第五列是路由的路径。刚刚使用命令行添加的admin路径就在这里,还有我们之前创建的第一个页面test路由也在这里。在debug:route
令行后面添加路由名称来查看详细的路由配置。
我们查看test路由,test路由的路径就是/test/{name},路由的_controller就是TestController的index()方法。
回到项目,我们查看一下admin这个页面,它的显示情况,我们确保项目的服务器已经启动。我们打开浏览器输入127.0.0.1:8000/admin
。DashboardController
为我们提供了一个模板页面,用来展示控制台的首页。
我们再来使用easyadmin-bundle为我们提供的另外一个命令行make:admin:crud
,这个命令行可以帮助我们快速的在管理端创建Model类的CRUD操作页面。我们为文章添加一个CRUD操作页面,命令行输入symfony console
,粘贴make:admin:crud
。
我们要为Post类和Comment类添加CRUDController,我们分别选择Post,CRUD的Controller所在的目录,我们选择默认,默认,现在就在Admin目录中生成了PostCrudController.php。我们再来使用命令行为Comment类添加CRUDController,这次选择0,默认,默认,在src下为我们创建了CommentCrudController。
我们打开浏览器搜索EasyAdminBundle
,我们打开第二项,symfony.com
这个页面上的文档,文档中第一项,Dashboards控制台这节点击进去。在控制台这一节我们可以设置边栏菜单,我们点击MainMenu
,DashboardController的configureMenuItems()
方法中,我们可以设置编栏菜单,使用MenuItem的linkToCrud()方法添加边栏菜单。
我们回到项目,我们取消第30行代码前的注释yield MenuItem::linkToCrud()
,第一项是菜单的标签,第二项是菜单项所使用的图标的样式类,第三项是所链接到的CRUD的Model类类名。标签我们输入Post,图标暂时使用list,类名我们选择Post。同样的方法我们创建评论菜单。
回到浏览器,刷新控制台。
文章和评论的菜单就显在了菜单栏了,我们点击文章菜单,这里就显示了文章的列表,我们可以点击右上角Add Post
来添加一篇文章。所有的CRUD工作都由EasyAdminBundle自动为我们生成。
我们在创建文章的页面发现了一些问题,我们的正文需要使用HTML编辑器,文章状态,希望可以使用下拉菜单的方式来选择发布状态,然后创建时间和更新时间,我们希望在点击Create按钮时,它自动添加,Post Image是用来上传图片的,需要将输入框修改为文件上传框。
在下一节,我们将解决这些问题。