octopouce-mu / admin-bundle
管理包
Requires
- php: ^7.1.3
- doctrine/doctrine-fixtures-bundle: ^3.0
- facebook/graph-sdk: ^5.6
- friendsofsymfony/jsrouting-bundle: ^2.2
- google/apiclient: ^2.2
- sensio/framework-extra-bundle: ^5.1
- stof/doctrine-extensions-bundle: ^1.3
- symfony/asset: ^3.4|^4.0
- symfony/form: ^3.4|^4.0
- symfony/framework-bundle: ^3.4|^4.0
- symfony/orm-pack: *
- symfony/security-bundle: ^3.4|^4.0
- symfony/swiftmailer-bundle: ^3.1
- symfony/translation: ^3.4|^4.0
- symfony/twig-bundle: ^3.4|^4.0
- symfony/yaml: ^3.4|^4.0
- twig/extensions: ^1.5
README
先决条件
本包版本需要 Symfony Flex (>= 4.0) 和 PHP 7。您想使用 Doctrine ORM 和 MySQL。
翻译
如果您希望使用本包提供的默认文本,请确保您已在配置中启用了翻译器。
# app/config/config.yml framework: default_locale: '%locale%' translator: fallbacks: ['%locale%']
# app/config/services.yml parameters: app_locales: en|fr locale: 'fr'
在 bundles.php 中添加供应商 KNP Doctrine Behaviors
<?php ... Knp\DoctrineBehaviors\Bundle\DoctrineBehaviorsBundle::class => ['all' => true],
有关翻译的更多信息,请参阅 Symfony 文档。
安装
- 使用 composer 下载 OctopouceAdminBundle
- 创建您的用户和邀请类
- 更新您的数据库模式
- 导入 OctopouceAdminBundle 路由
- 发布资产
- 配置文件安全
- 生成数据固定
- 配置 .env
步骤 1:使用 composer 下载 OctopouceAdminBundle
使用 composer 需求包
$ composer require octopouce-mu/admin-bundle
步骤 2:创建您的用户和邀请类
本包的目标是将一些 User 类持久化到数据库中。因此,您的第一个任务是创建应用程序的 User 和 Invitation 类。此类可以看起来和表现如您所愿:添加任何您认为有用的属性或方法。这是 您的 User & Invitation 类。
本包提供了基类,这些类已经映射到大多数字段,以便更容易创建实体。以下是您如何使用它的方法
- 扩展基类(如果您使用的是任何 doctrine 变体,则来自
Model文件夹) - 映射
id字段。因为它是从父类继承的,所以它必须是受保护的。
注意
文档使用了一个名为 AppBundle 的包,根据 Symfony 最佳实践。然而,您当然可以将用户类放置在任何您想要的包中。
注意
如果您在用户类中覆盖了 __construct() 方法,请确保调用 parent::__construct(),因为基用户类依赖于它来初始化一些字段。
a) Doctrine ORM 用户类
如果您通过 Doctrine ORM 持久化用户,则您的 User 类应位于包的 Entity 命名空间中,如下所示以开始
<?php // src/Entity/Account/User namespace App\Entity\Account; use Octopouce\AdminBundle\Entity\Account\User as BaseUser; use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity * @ORM\Table(name="account_user") */ class User extends BaseUser { public function __construct() { parent::__construct(); } }
b) Doctrine ORM 邀请类
如果您通过 Doctrine ORM 持久化用户,则您的 Invitation 类应位于包的 Entity 命名空间中,如下所示以开始
<?php // src/Entity/Account/Invitation namespace App\Entity\Account; use Octopouce\AdminBundle\Entity\Account\Invitation as BaseInvitation; use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity * @ORM\Table(name="account_invitation") */ class Invitation extends BaseInvitation { public function __construct() { parent::__construct(); } }
步骤 3:更新您的数据库模式
对于 ORM,运行以下命令。
$ php bin/console doctrine:schema:update --force
注意
如果出现“1071 指定键太长;最大键长度为 767 字节”的错误,请更改 doctrine 配置
# config/packages/doctrine.yaml doctrine: dbal: charset: utf8 default_table_options: charset: utf8 collate: utf8_unicode_ci
步骤 4:导入 OctopouceAdminBundle 路由文件
现在您已激活并配置了包,剩下要做的就是导入 OctopouceAdminBundle 路由文件(如果 Symfony Flex 还未导入该文件)。
# config/routes/octopouce.yaml _octopouce_admin: resource: "@OctopouceAdminBundle/Resources/config/routing/routing.yaml"
步骤 5:发布资产
$ php bin/console assets:install --symlink
步骤 6:配置文件安全
a. 为管理员和用户配置默认设置
# config/packages/security.yaml security: encoders: App\Entity\Account\User: bcrypt providers: database_users: entity: { class: App\Entity\Account\User, property: email } role_hierarchy: ROLE_USER_ADMIN: ROLE_USER ROLE_ADMIN: ROLE_USER ROLE_SUPER_ADMIN: ROLE_ADMIN # https://symfony.com.cn/doc/current/security.html#initial-security-yml-setup-authentication firewalls: dev: pattern: ^/(_(profiler|wdt)|css|images|js)/ security: false admin: pattern: ^/admin/ # you can change your user checker here user_checker: Octopouce\AdminBundle\Security\UserChecker anonymous: true form_login: check_path: octopouce_admin_login_admin login_path: octopouce_admin_login_admin csrf_token_generator: security.csrf.token_manager failure_path: octopouce_admin_login_admin use_referer: true default_target_path: octopouce_admin_dashboard_index logout: path: octopouce_admin_logout target: octopouce_admin_login_admin # you can config user control in frontend here, exemple : #main: # pattern: ^/ # user_checker: App\Security\UserChecker # anonymous: true # form_login: # check_path: security_login # login_path: security_login # csrf_token_generator: security.csrf.token_manager # failure_path: security_login # use_referer: true # default_target_path: account_index # logout: # path: security_logout # target: homepage access_control: # this is a catch-all for the admin area # additional security lives in the controllers - { path: '^/admin/login', roles: IS_AUTHENTICATED_ANONYMOUSLY } - { path: '^/admin', roles: ROLE_ADMIN }
步骤 7:生成数据固定
本包需要默认数据才能工作,因此您可以在数据库中生成固定数据
$ php bin/console doctrine:fixtures:load
##步骤 8:配置 .env
为了完成OctopouceAdminBundle的配置,您可以在.env文件中配置包依赖。
其他包
您可以使用OctopouceAdminBundle添加以下包