laravel的两个多模块扩展
-
caffeinated/modules
caffeinated/modules是 laravel5 实现多模块开发扩展包,安装完成后可以使用 artisan 命令创建一个独立的 mvc 模块,方便我们快速的构建 laravel 的多模块应用。
caffeinated/modules
要求laravel5.0+ -
nwidart/laravel-modules
nwidart/laravel-modules
至少要求laravel5.4
ps:因为项目原因只能使用laravel5.2,所以这里选用了caffeinated/modules
安装caffeinated/modules扩展
扩展地址:https://packagist.org/packages/caffeinated/modules
composer require caffeinated/modules
注册服务提供者
在 config/app.config
的 providers 配置项中添加:Caffeinated\Modules\ModulesServiceProvider::class,
注册门面
在config/app.config
的 alias 配置项中添加:'Module' => Caffeinated\Modules\Facades\Module::class,
生成模块
比如我们想创建一个测试模块:php artisan make:module test
ps:如果不明白需要填写的内容一路回车就好
执行后生成的目录:
国际化
- 路由
<?php
//Test 模块
Route::group(['prefix' => 'Test'], function () {
Route::group(['middleware' => ['lang']], function () {
//国际化测试
Route::post('languageTest', 'TestController@languageTest');
});
});
- 语言包
在Modules\test\Resources\Lang\
下创建en\langTest.php
和zh_ch\langTest.php
,内容如下
image.png
//zh_ch\langTest.php
<?php
return [
'this_is_english' => '这是英语!',
];
//en\langTest.php
<?php
return [
'this_is_english' => 'this is English!',
];
- 控制器
<?php
/**
* Created by PhpStorm.
* User: 有梦想的咸鱼
* Date: 2018/10/25
* Time: 13:49
*/
namespace App\Modules\Test\Http\Controllers;
use \Illuminate\Http\Request;
class TestController
{
public function __construct()
{
}
//国际化测试
public function languageTest(Request $request)
{
$lang = $request->lang;
$data['lang'] = $lang;
//语言切换-现在由lang中间件完成
//App::setLocale($lang);
//加载根目录(Resources\lang\)下的语言包
//$data['trans'] = trans('langTest.this_is_english');
//加载模块下的语言包
$data['trans'] = trans('Test::langTest.this_is_english');
return response()->json($data);
}
}
- 中间件
<?php
namespace App\Modules\Testmodule\Http\Middleware;
use Closure;
use App;
class LangTransMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if (isset($request->lang)){
switch ($request->lang){
case 'zh_cn':
App::setLocale('zh_cn');
break;
default:
App::setLocale('en');
}
}
return $next($request);
}
}
-
测试返回结果
image.png
网友评论