2017 © Pedro Peláez
 

library laravel-module

laravel modules

image

houdunwang/laravel-module

laravel modules

  • Sunday, July 29, 2018
  • by houdunwang
  • Repository
  • 1 Watchers
  • 1 Stars
  • 185 Installations
  • PHP
  • 1 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 30 Versions
  • 0 % Grown

The README.md

组件介绍

通过使用模块来管理大型Laravel项目,模块就像一个laravel包非常方便的进行添加或移除。, (*1)

这个包已经在 HDCMS 中使用。, (*2)

模块是在 nwidart.com/laravel-moduleslaravel-permission 组件基础上扩展了一些功能,所以需要先安装这两个组件。, (*3)

laravel-modules 和 laravel-permission 组件的功能都可以正常使用, (*4)

安装组件

composer require houdunwang/laravel-module

php artisan vendor:publish --provider="Nwidart\Modules\LaravelModulesServiceProvider"

php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider" --tag="migrations"

php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider" --tag="config"

php artisan vendor:publish --provider="Houdunwang\Module\LaravelServiceProvider"

php artisan migrate

配置 composer.json 设置自动加载目录, (*5)

{
  "autoload": {
    "psr-4": {
      "App\\": "app/",
      "Modules\\": "Modules/"
    }
  }
}

创建模块

下面的命令是安装 Admin 模块, (*6)

php artisan hd:module Admin

创建模块会同时执行以下操作:, (*7)

  • 生成 menus.php 配置文件
  • 生成 permission.php 权限文件

模块配置

新建模块时系统会自动创建配置,一般情况下不需要执行以下命令生成配置文件(除组件添加新配置功能外), (*8)

php artisan hd:config Admin

文件说明, (*9)

  • config——基础配置,用于配置模块中文描述等信息
  • permission.php——权限设置
  • menus.php——后台管理菜单

获取配置, (*10)

下面是获取 Admin/config/config.php 文件中的name值,支持 . 从深度嵌套的数组中检索值。, (*11)

\HDModule::config('admin.config.name')

保存配置, (*12)

function saveConfig(array $data = [], $name = 'config')
  • $data——配置数据
  • $name——配置文件

后台菜单

系统会根据模块配置文件 menus.php 生成后台菜单项, (*13)

当 menus.php 文件不存在时,执行 php artisan hd:config Admin 系统会为模块 Admin 创建菜单。, (*14)

获取菜单, (*15)

获取系统可使用的所有菜单,以集合形式返回数据。可用于后台显示菜单列表。, (*16)

\HDModule::getMenus()

权限管理

首先需要安装 laravel-permission 组件,安装方式在上面已经介绍。, (*17)

创建权限配置

系统根据 Admin 模块配置文件 permission.php 重新生成权限,执行以下命令会创建权限配置文件。, (*18)

php artisan hd:permission Admin

不指定模块时生成所有模块的权限表, (*19)

php artisan hd:permission

文件存在时不会覆盖, (*20)

生成的配置文件结构如下:, (*21)

<?php return [
    [
        'group' => '文章管理',
        'permissions' => [
            ['title' => '添加栏目', 'name' => 'Modules\Admin\Http\Controllers\CategoryController@create', 'guard' => 'admin'],
        ],
    ],
];

name 指用于验证时的 权限标识 ,可以使用任何字符定义。如果以 控制器@方法 形式定义的,在使用中间件验证时会比较容易。, (*22)

获取权限配置

根据 guard 获取权限数据,可用于后台配置设置表单。, (*23)

\HDModule::getPermissionByGuard('admin');

中间件

laravel-permission 组件提供了中间件功能,但处理不够灵活并对资源控制器支持不好。所以houdunwang/laravel-module 组件提供了中间件的功能扩展,你也可以使用 laravel-permission 中间件的所有功能。, (*24)

以下都是对 houdunwang/laravel-module扩展中间件的说明,laravel-permission 中间件使用请查看组件手册。, (*25)

使用中间件路由需要模块 permission.php 配置文件中的权限标识为 控制器@方法形式。, (*26)

配置, (*27)

app/Http/Kernel.php 文件的 $routeMiddleware 段添加中间件, (*28)

protected $routeMiddleware = [
    ...
    'permission'    => \Houdunwang\Module\Middlewares\PermissionMiddleware::class,
    ...
];

站长特权

配置文件 config/hd_module.php 文件中定义站长使用的角色。, (*29)

'webmaster' => 'webmaster'

在使用中间件验证时,如果不前用户所在角色为站长角色,系统不进行验证直接放行。, (*30)

普通路由

系统根据控制器方法检查是否存在权限规则,然后自动进行验证。, (*31)

所以必须正确设置路由配置文件,下面是对编辑文章的权限设置, (*32)

<?php
#config/permisson.php
return [
    [
        'group'       => '文章管理',
        'permissions' => [
            ['title' => '编辑管理', 'name' => 'Modules\Admin\Http\Controllers\ArticleController@edit', 'guard' => 'admin'],
        ],
    ],
];

下面是编辑文章的路由定义,必须保存 Modules\Admin\Http\Controllers\ArticleController@edit 规则已经在权限配置文件中定义,否则系统不验证。, (*33)

Route::group([
    'middleware' => ['web', 'auth:admin'],'prefix'     => 'admin','namespace'  => 'Modules\Admin\Http\Controllers'], function () {
    Route::resource('edit_article', 'ArticleController@edit')->middleware("permission:admin");
});

上面的 permission 中间件的 admin 参数是权限 guard。, (*34)

资源路由

资源路由新增资源由 createstore方法完成,更新资源由 editupdate 方法完成。权限规则只需要设置 createedit 方法即可,在执行 store 动作时系统会自动使用 create 方法规则,update 动作会使用 create 方法规则,下面是用户管理的资源控制器规则设置:, (*35)

<?php
#config/permisson.php
return [
    [
        'group'       => '会员管理',
        'permissions' => [
            ['title' => '会员管理', 'name' => 'Modules\Admin\Http\Controllers\UserController@index', 'guard' => 'admin'],
            ['title' => '添加会员', 'name' => 'Modules\Admin\Http\Controllers\UserController@create', 'guard' => 'admin'],
            ['title' => '编辑会员', 'name' => 'Modules\Admin\Http\Controllers\UserController@edit', 'guard' => 'admin'],
            ['title' => '删除会员', 'name' => 'Modules\Admin\Http\Controllers\UserController@destory', 'guard' => 'admin'],
            ['title' => '查看会员', 'name' => 'Modules\Admin\Http\Controllers\UserController@show', 'guard' => 'admin'],
        ],
    ],
];

资源路由中间件的使用, (*36)

Route::resource('role', 'RoleController')->middleware("permission:admin,resource");

上面的 permission 中间件的 admin 参数是权限 guard,中间件 permission 的第二个参数 resource 表示这是一个资源路由验证。, (*37)

模块方法

获取模块对象, (*38)

#$module 模块标识
\HDModule::module($module = null)

获取当前请求使用的模块名, (*39)

\HDModule::currentModule()

获取模块菜单,参数为模块标识,不传参数时获取当前模块菜单, (*40)

\HDModule::getMenuByModule('Admin')

验证权限如果用户是站长直接放行, (*41)

\HDModule::hadPermission()

获取模块列表,参数为不需要返回的模块,不传参数获取所有模块, (*42)

\HDModule::getModulesLists(['Admin','Article'])

获取模块路径, (*43)

#$module——模块标识
\HDModule::getModulePath($module = null);

自动化构建

大部分业务由 Controller控制器、Request请求难、Model模型、View视图、Handle处理器构成,很多时间这些工作都是重复的,系统支持通过一行命令生成业务需要的大部功能。, (*44)

生成工作是根据模型和数据表完成的,所以必须先创建模型在数据库中创建模型表。, (*45)

创建模型和迁移

执行以下命令系统会为 Article 模块创建 Category模型和对应的数据迁移文件。, (*46)

php artisan hd:model Category Article

执行自动化构建

首先安装组件, (*47)

composer require houdunwang/laravel-autocreate

下面是根据 Article 模块的 Category 模型生成业务框架,系统同时会创建模型表单处理器,请查看 https://github.com/houdunwang/laravel-autocreate 学习。, (*48)

php artisan hd:autocreate Modules/Article/Entities/Category.php 文章

执行以下命令会创建下列文件, (*49)

  1. 创建控制器 Http/Controllers/CategoryController
  2. 表单验证请求 Http/Request/CategoryRequest
  3. 添加路由规则 routes.php
  4. 生成模版视图

必须保存模型与数据表存在,某个文件存在时忽略这个文件继续向下执行, (*50)

License

The Laravel framework is open-sourced software licensed under the MIT license., (*51)

The Versions

07/07 2018

v1.0.16

1.0.16.0

laravel modules

  Sources   Download

MIT

The Requires

 

by Avatar houdunwang

07/07 2018

v1.0.15

1.0.15.0

laravel modules

  Sources   Download

MIT

The Requires

 

by Avatar houdunwang

07/07 2018

v1.0.13

1.0.13.0

laravel modules

  Sources   Download

MIT

The Requires

 

by Avatar houdunwang

05/07 2018

v1.0.12

1.0.12.0

laravel modules

  Sources   Download

MIT

The Requires

 

by Avatar houdunwang

05/07 2018

v1.0.11

1.0.11.0

laravel modules

  Sources   Download

MIT

The Requires

 

by Avatar houdunwang

05/07 2018

v1.0.10

1.0.10.0

laravel modules

  Sources   Download

MIT

The Requires

 

by Avatar houdunwang

04/07 2018

v1.0.9

1.0.9.0

laravel modules

  Sources   Download

MIT

The Requires

 

by Avatar houdunwang

02/07 2018

v1.0.8

1.0.8.0

laravel modules

  Sources   Download

MIT

The Requires

 

by Avatar houdunwang

02/07 2018

v1.0.7

1.0.7.0

laravel modules

  Sources   Download

MIT

The Requires

 

by Avatar houdunwang

02/07 2018

v1.0.6

1.0.6.0

laravel modules

  Sources   Download

MIT

The Requires

 

by Avatar houdunwang

02/07 2018

v1.0.5

1.0.5.0

laravel modules

  Sources   Download

MIT

The Requires

 

by Avatar houdunwang

01/07 2018

v1.0.3

1.0.3.0

laravel modules

  Sources   Download

MIT

The Requires

 

by Avatar houdunwang

01/07 2018

v1.0.2

1.0.2.0

laravel modules

  Sources   Download

MIT

The Requires

 

by Avatar houdunwang

25/06 2018

v1.0.1

1.0.1.0

laravel modules

  Sources   Download

MIT

The Requires

 

by Avatar houdunwang