syscover/laravel-nav-tools

此包已被废弃,不再维护。作者建议使用 syscover/pulsar-navtools 包代替。

NavTools 包

v3.0.9 2017-03-29 16:02 UTC

This package is auto-updated.

Last update: 2022-02-01 13:04:57 UTC


README

Total Downloads Latest Stable Version License

安装

1 - 在命令行运行

composer require syscover/laravel-nav-tools

2 - 注册服务提供者,在文件 config/app.php 中添加到 providers 数组

Syscover\NavTools\NavToolsServiceProvider::class,

3 - 要发布包,必须在控制台输入

php artisan vendor:publish --provider="Syscover\NavTools\NavToolsServiceProvider"

4 - 注册中间件 pulsar.navTools,在文件 app/Http/Kernel.php 中添加到 routeMiddleware 数组

'pulsar.navTools' => \Syscover\NavTools\Middleware\NavTools::class,

通用配置环境值

在环境文件 .env 中设置 NAVTOOLS_URL_TYPE 选项

设置您网站的 URL 类型,您有三种类型:lang、country 或 lang-country,对于 URL 类型 lang

NAVTOOLS_URL_TYPE=lang

您可以处理这些 URL

hrrp://mydomain.com/en/any-page

对于 URL 类型 country

NAVTOOLS_URL_TYPE=country

您可以处理这些 URL

hrrp://mydomain.com/us/any-page

对于 URL 类型 lang-country

NAVTOOLS_URL_TYPE=lang-country

您可以处理这些 URL

hrrp://mydomain.com/en-us/any-page

在环境文件 .env 中设置 NAVTOOLS_LANGS 选项

设置您网站可用的国家

NAVTOOLS_LANGS=en|es

在环境文件 .env 中设置 NAVTOOLS_COUNTRIES 选项

设置您网站可用的国家

NAVTOOLS_COUNTRIES=us|gb|es

在环境文件 .env 中设置 NAVTOOLS_DEFAULT_COUNTRY 选项

设置您网站默认国家

NAVTOOLS_DEFAULT_COUNTRY=es

使用 NavTools 进行路由

在 app\Http\routes.php 文件中使用此闭包来实现具有翻译的路由

Route::group(['middleware' => ['pulsar.navTools']], function() {

    // write here your routes

});

路由配置

您有多个 URL 配置选项,取决于选择的 NAVTOOLS_URL_TYPE 参数

使用 lang 变量编写您的路由

Route::group(['middleware' => ['pulsar.navTools']], function() {
    Route::get('/',                         function(){ return view('www.index'); });
    Route::get('{lang}',                  function(){ return view('www.index'); });
    Route::post('{lang}/contact',         ['as'=>'contact',  'uses'=>'FrontEndController@contact']);
});

或设置路由上的 lang 变量

Route::group(['middleware' => ['pulsar.navTools']], function() {
    Route::get('/',                   function(){ return view('www.index'); });

    Route::get('en',                  function(){ return view('www.index'); });
    Route::get('es',                  function(){ return view('www.index'); });

    Route::post('en/contact',         ['as' => 'contact-en',          'uses'=>'FrontEndController@contact']);
    Route::post('es/contacto',        ['as' => 'contact-es',          'uses'=>'FrontEndController@contact']);
});

或设置常量 lang 但 country 变量

Route::group(['middleware' => ['pulsar.navTools']], function() {
    Route::get('/',                   function(){ return view('www.index'); });

    Route::get('/en-{country}',                  function(){ return view('www.index'); });
    Route::get('/es-{country}',                  function(){ return view('www.index'); });

    Route::post('en-{country}'/contact',         ['as' => 'contact-en',          'uses'=>'FrontEndController@contact']);
    Route::post('es-{country}'/contacto',        ['as' => 'contact-es',          'uses'=>'FrontEndController@contact']);
});

或使用 lang 和 country 变量获取语言值。

Route::group(['middleware' => ['pulsar.navTools']], function() {
    Route::get('/',                   function(){ return view('www.index'); });

    Route::get('/{lang}-{country}',                  function(){ return view('www.index'); });

    Route::post('/{lang}-{country}/contact',         ['as' => 'contact-en',          'uses'=>'FrontEndController@contact']);
});

在您的应用程序中获取值

您可以使用这些辅助函数获取 lang 和 country 值。

user_country(); // to get country user
user_lang(); // to get language user

设置路由时,您需要根据 NAVTOOLS_URL_TYPE 添加 lang 或 country 参数。

route('routeName', ['lang' => 'en', 'country' => 'us']);

您可以使用自定义辅助函数 nt_route(),此辅助函数会自动插入变量 lang 和 country,除非您指定这些变量。

nt_route('routeName');

您可以使用 redirect() 辅助函数而无需任何麻烦,我们已扩展 Laravel 核心,使 redirect()->route()nt_route() 做同样的事情。

如果您想更改语言或国家,您必须使用这些辅助函数

change_language('en');
change_country('us');

许可证

NavTools 是开源软件,根据 MIT 许可证 许可。