symfony快速搭建後颱
- 2019-07-13 10:48:00
- CJL 原創
- 5058
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