laravel5.* 模块化 多语言

2018-10-25  本文已影响24人  噫那里有条咸鱼

laravel的两个多模块扩展


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,

image.png

注册门面

config/app.config的 alias 配置项中添加:'Module' => Caffeinated\Modules\Facades\Module::class,

image.png

生成模块

比如我们想创建一个测试模块:php artisan make:module test

image.png

ps:如果不明白需要填写的内容一路回车就好

执行后生成的目录:



国际化

<?php
//Test 模块
Route::group(['prefix' => 'Test'], function () {
        Route::group(['middleware' => ['lang']], function () {
            //国际化测试
            Route::post('languageTest', 'TestController@languageTest');
        });
});
//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);
    }
}
上一篇 下一篇

猜你喜欢

热点阅读