hasheado/admin-bundle

基于 SonataAdminBundle 的 Symfony2 扩展包,用于生成管理员界面

安装: 30

依赖者: 0

建议者: 0

安全性: 0

星标: 7

关注者: 1

分支: 1

语言:JavaScript

类型:symfony-bundle

dev-master / 1.0.x-dev 2015-04-09 21:00 UTC

This package is not auto-updated.

Last update: 2024-09-24 15:28:32 UTC


README

步骤 1: 下载扩展包

注意:此扩展包依赖于 SonataAdminBundleSonataUserBundleSonataDoctrineORMAdminBundle

在已经运行的 Symfony 安装中,编辑你的 composer.json 文件,并添加以下行

require: {
    "hasheado/admin-bundle": "dev-master"
}

然后,打开命令行,进入你的项目目录,并执行以下命令以下载此扩展包的最新稳定版本

$ composer update

此命令要求你全局安装了 Composer,请参阅 Composer 文档的 安装章节

步骤 2: 启用扩展包

为了启用扩展包,我们需要在你的项目中的 app/AppKernel.php 文件中添加以下行

<?php
// app/AppKernel.php

// ...
class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            // ...

            // Add dependencies
            new Sonata\CoreBundle\SonataCoreBundle(),
            new Sonata\BlockBundle\SonataBlockBundle(),
            new Knp\Bundle\MenuBundle\KnpMenuBundle(),
            new Sonata\DoctrineORMAdminBundle\SonataDoctrineORMAdminBundle(),
            new FOS\UserBundle\FOSUserBundle(),
            new Sonata\UserBundle\SonataUserBundle('FOSUserBundle'),
            new Sonata\EasyExtendsBundle\SonataEasyExtendsBundle(),

            // Then add SonataAdminBundle
            new Sonata\AdminBundle\SonataAdminBundle(),
            // And HasheadoAdminBundle
            new Hasheado\AdminBundle\HasheadoAdminBundle(),
        );

        // ...
    }

    // ...
}

步骤 3: 配置

如果你遵循了安装说明,HasheadoAdminBundle 应该已经安装,但无法访问。在开始使用之前,你需要先为你的模型配置它。

导入 HasheadoAdminBundle 的配置文件

# app/config/config.yml
imports:
 - { resource: @HasheadoAdminBundle/Resources/config/config.yml }

 sonata_user:
    class:
        user: pathToYourBundle\Entity\User
        group: pathToYourBundle\Entity\Group

fos_user:
    db_driver:      orm # can be orm or odm
    firewall_name:  admin
    user_class:     pathToYourBundle\Entity\User
    group:
        group_class:   pathToYourBundle\Entity\Group
        group_manager: sonata.user.orm.group_manager  # If you're using doctrine orm (use sonata.user.mongodb.user_manager for mongodb)

    service:
        user_manager: sonata.user.orm.user_manager    # If you're using doctrine orm (use sonata.user.mongodb.group_manager for mongodb)

    from_email:
        address:        noreply@adminbundle.com
        sender_name:    Hasheado Admin Bundle

当然,替换你的 User 和/或 Group 实体的路径,并且不要忘记让你的类继承 Sonata\UserBundle\Entity\BaseUser 和 Sonata\UserBundle\Entity\BaseGroup 类。

然后你需要添加以下安全配置

# app/config/security.yml
security:
    role_hierarchy:
        ROLE_ADMIN:       [ROLE_USER, ROLE_SONATA_ADMIN]
        ROLE_SUPER_ADMIN: [ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
        SONATA:
            - ROLE_SONATA_PAGE_ADMIN_PAGE_EDIT  # if you are using acl then this line must be commented

    providers:
        fos_userbundle:
            id: fos_user.user_manager

    encoders:
        FOS\UserBundle\Model\UserInterface: sha512

    firewalls:
        # Disabling the security for the web debug toolbar, the profiler and Assetic.
        dev:
            pattern:  ^/(_(profiler|wdt)|css|images|js)/
            security: false

        # -> custom firewall for the admin area of the URL
        admin:
            pattern:            /admin(.*)
            context:            user
            form_login:
                provider:       fos_userbundle
                login_path:     /admin/login
                use_forward:    false
                check_path:     /admin/login_check
                failure_path:   null
            logout:
                path:           /admin/logout
                target:         /admin
            anonymous:          true

        # -> end custom configuration

    acl:
        connection: default

    access_control:
        # Admin login page needs to be access without credential
        - { path: ^/admin/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/admin/logout$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/admin/login_check$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        # Secured part of the site
        # This config requires being logged for the whole site and having the admin role for the admin part.
        # Change these rules to adapt them to your needs
        - { path: ^/admin/, role: [ROLE_ADMIN, ROLE_SONATA_ADMIN] }
        - { path: ^/.*, role: IS_AUTHENTICATED_ANONYMOUSLY }

到这一点,扩展包已经可用,但还不是完全准备好。

你需要更新模式

php app/console doctrine:schema:update --force

并创建一个新的 root 用户

php app/console fos:user:create --super-admin

为了能够访问 HasheadoAdminBundle 的页面,你需要将其路由添加到应用程序的路由文件中

# app/config/routing.yml
admin:
    resource: '@HasheadoAdminBundle/Resources/config/routing.yml'

最后,发布资产

php app/console assets:install

到这一点,你已可以通过访问 URL: http://yoursite.local/admin/dashboard 访问(空的)管理员仪表板。然后,按照 SonataAdminBundle 文档开始添加你的管理员。

错误 & 改进

请提交问题: HasheadoAdminBundle 的问题