symfony快速搭建后台
- 2019-07-13 10:48:00
- CJL 原创
- 5055
https://github.com/kevinpapst/AdminLTEBundle AdminLTE bundle for Symfony 4
https://www.cnblogs.com/forget-remember/p/10172199.html 最近项目需要用到AdminLTE,所以整理一份中文版的小教程
https://symfony.com/doc/master/bundles/SonataAdminBundle/index.html Admin Bundle
为提高安装速度切换阿里composer源
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
详细参考:http://www.centphp.com/view/153
1、创建基础symfony项目
symfony new --full my_demo_project
详细参考:https://symfony.com/doc/4.2/setup.html
以下操作都需进入项目目录执行
2、添加Admin Bundle
composer require sonata-project/admin-bundle
详细参考:https://sonata-project.org/bundles/admin/3-x/doc/getting_started/installation.html
3、添加 doctrine
composer require sonata-project/doctrine-orm-admin-bundle
详细参考:https://sonata-project.org/bundles/doctrine-orm-admin/master/doc/reference/installation.html
4、创建entity
bin/console make:entity
按提示填写参数进行生成
详细参考:https://symfony.com/doc/4.2/doctrine.html#creating-an-entity-class
5、映射到数据库
bin/console make:migration bin/console doctrine:migrations:migrate
先生成数据库升级文件,再执行数据库升级文件
详细参考:https://symfony.com/doc/4.2/doctrine.html#migrations-creating-the-database-tables-schema
6、启动服务
配置nginx,参考 https://symfony.com/doc/4.2/setup/web_server_configuration.html#nginx
或者直接启动内置webserver
symfony server:start
7、生成admin管理
bin/console make:sonata:admin
按提示输入entity类名、admin类名、controller等信息
生成后检查service是否配置成功
详细参考:https://sonata-project.org/bundles/admin/3-x/doc/getting_started/creating_an_admin.html
8、浏览器访问可以看到页面展示
高级应用:
1、官方文档:https://sonata-project.org/bundles/admin/3-x/doc/index.html
大部分问题都可以在官方文档找到答案
2、修改logo和项目名
修改配置文件config/packages/sonata_admin.yaml
sonata_admin: title: '代码覆盖率分析' title_logo: static/logo.jpg
3、默认语言改为中文
sonata语言配置 修改配置文件:config/packages/sonata_translation.yaml
sonata_translation: locales: ['zh_CN', 'en'] default_locale: 'zh_CN'
整体项目语言配置:config/packages/translation.yaml
framework: default_locale: zh_CN translator: default_path: '%kernel.project_dir%/translations' fallbacks: - en
4、添加项目语言翻译
admin类修改使用的语言domain,不修改的话默认语言domain为messages
public function getTranslationDomain() { return 'AdminEntityMessages'; }
创建语言翻译文件 translations/AdminEntityMessages.zh_CN.yaml 默认为translations/messages.zh_CN.yaml
#实体字段名称定义 Action: 操作 Id: 编号 Name: 名称 Host: 域名 Dir: 代码目录 Status: 状态
前面是原显示的英文字段,后面是中文名称
5、修改sonata默认的中文翻译
创建文件translations/SonataAdminBundle.zh_CN.yaml
btn_advanced_filters: 高级搜索 link_filters: 过滤器
原英文名称可以在源码中查找
6、列表页面添加自定义操作按钮
在admin类中修改方法 configureListFields
protected function configureListFields(ListMapper $listMapper): void { $listMapper ->add('id') ->add('name') ->add('host') ->add('dir') ->add('status', 'choice', [ 'choices' => array_flip(self::$status), ]) ->add('_action', null, [ 'actions' => [ 'report' => [ 'template' => 'actions/list__action_report.html.twig', ], 'show' => [], 'edit' => [], 'delete' => [], ], ]); }
其中report是自己添加的操作,通过template 参数设置按钮显示使用的模板文件
templates/actions/list__action_report.html.twig
{# templates/CRUD/list__action_report.html.twig #} <a class="btn btn-sm btn-default view_link" href="{{ url('generateReport', {id: object.id}) }}">生成报表</a>
twig支持的方法可以通过debug命令查找
bin/console debug:twig
twig语法参考:https://www.kancloud.cn/yunye/twig-cn/159454
twig中调试输出:https://symfony.com/doc/4.2/templating/debug.html
7、添加左侧导航栏按钮
修改默认配置 config/packages/sonata_admin.yaml
sonata_admin: title: '代码覆盖率分析' title_logo: static/logo.jpg templates: layout: standard_layout.html.twig
把默认的layout模板文件改为我们自己的
templates/standard_layout.html.twig
{% extends '@SonataAdmin/standard_layout.html.twig' %} {% block side_bar_after_nav %} <ul class="sidebar-menu" data-widget="tree"> <li class="first"> <a href="{{ path('generatePhpConfig') }}"> 保存配置 </a> </li> </ul> {% endblock %}
8、左侧导航设置为顶级菜单,去除二级菜单
修改config/packages/sonata_admin.yaml
sonata_admin: dashboard: blocks: - { type: sonata.admin.block.admin_list, position: left } groups: settings: label: 任务配置 label_catalogue: ~ on_top: true items: - admin.task
在菜单配置中添加 on_top: true