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



发表评论
评论通过审核后显示。
流量统计