赞
踩
在日常的开发中,我们往往不会简单的开发单个功能或多个简单功能的项目,而且随着项目的推进,代码会越来越庞大,因此为了避免一个模块多个功能混杂的问题,这里采用模块化开发。
本系统采用的是:nwidart/laravel-modules,laravel 的模块管理器
git 地址:https://github.com/nWidart/laravel-modules
目录
composer require nwidart/laravel-modules
在 config /app.php
添加服务提供者
- 'providers' => [
- Nwidart\Modules\LaravelModulesServiceProvider::class,
- ],
添加别名
- 'aliases' => [
- 'Module' => Nwidart\Modules\Facades\Module::class,
- ],
PS:以上内容在Laravel5.0之前必须添加,5.0之后则可不必须
执行完上面这条命令之后,在 config 文件夹下会生成一个 modules.php 文件,这个是模块开发的配置文件,你可以在这里面进行配置。
php artisan vendor:publish --provider="Nwidart\Modules\LaravelModulesServiceProvider"
修改文件:composer. json
- {
- "autoload": {
- "psr-4": {
- "App\\": "app/",
- "Modules\\": "Modules/"
- }
- }
- }
PS:添加完后composer dump-autoload更新
- php artisan module:make module-name
- php artisan module:make module-name1 module-name2 module-name3 //生成多个模块
以上生成的目录结构的模块是在和 app 同级的目录下,不便于管理,建议将目录放置在app目录下
方法:修改配置文件 config/modules.php 文件
- 'namespace' => 'App\Modules',
- 'paths' => [
- 'modules' => base_path('App\Modules'),
- ]
方法:修改配置文件 config/modules.php 文件
①将配置文件中有关 start 的配置去掉
- 'stubs' => [
- 'enabled' => false,
- 'path' => base_path() . '/vendor/nwidart/laravel-modules/src/Commands/stubs',
- 'files' => [
- // 'start' => 'start.php',
- 'routes' => 'Http/routes.php',
- ],
- 'replacements' => [
- // 'start' => ['LOWER_NAME'],
- ],
- ],
接下来再将 Blog/module.json 下面生成的 start.php 去掉
- {
- "files": [],
- }
②修改路由文件生成路径
- 'stubs' => [
- 'files' => [
- // 'start' => 'start.php',
- 'routes' => 'Routes/routes.php',
- ],
- ]
③接下来修改路由服务提供者,注册路由
php artisan module:route-provider project
为指定的模块生成给定的路由。 执行完此命令之后,会在 Blog/Providers 目录下面生成一个 RouteServiceProvider.php 文件,此文件就是路由的服务提供者。 接下来修改 RouteServiceProvider.php 文件
- public function map(Router $router)
- {
- // if (!app()->routesAreCached()) {
- // require __DIR__ . '/Http/routes.php';
- // }
- if (! app()->routesAreCached()) {
- $this->mapWebRoutes();
- }
- }
- protected function mapWebRoutes()
- {
- //方法一:
- //Route::group([
- //'middleware' => 'web',
- //'namespace' => $this->namespace,
- //], function ($router) {
- //require module_path('Admin') . '/Routes/routes.php';
- //});
- //方法二:
- Route::middleware('web')
- ->namespace($this->rootUrlNamespace)
- ->group(module_path('Project') . '/Routes/routes.php');
- }
在此 RouteServiceProvider.php 文件已经修改完毕。 接下来修改 Blog/Providers/BlogServiceProvider.php 文件,修改如下:
- public function register()
- {
- //注册服务提供者
- $this->app->register(RouteServiceProvider::class);
- }
至此,Laravel整个安装与模块化配置完成。
以上内容大多来自https://learnku.com/articles/6153/laravel-modular-development
实际开发应用时略做了改动,各位可以参考原文或自由发挥做出适合自己开发的调整。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。