syscover/pulsar-navtools

Navtools 包

dev-master 2018-09-13 18:57 UTC

This package is auto-updated.

Last update: 2024-09-18 02:59:12 UTC


README

Total Downloads Latest Stable Version License

安装

1 - 在命令行运行

composer require syscover/pulsar-navtools

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

php artisan vendor:publish --provider="Syscover\Navtools\NavtoolsServiceProvider"

3 - 在文件 app/Http/Kernel.php 中注册中间件 pulsar.navtools 并添加到 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

});

路由配置

根据所选的 NAVTOOLS_URL_TYPE 参数,您有多个 URL 配置选项

使用 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']);
});

辅助函数 [user_country()]

从用户获取国家,简单案例

user_country(); // get country user

辅助函数 [user_lang()]

从用户获取语言,简单案例

user_lang(); // get language user

辅助函数 [nt_route()]

要设置路由,您需要根据 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_lang()]

您可以使用 change_lang 辅助函数更改语言

change_lang('en');

辅助函数 [change_country()]

您可以使用 change_country 辅助函数更改国家

change_country('us');

辅助函数 [active_route()]

活动路由是一个辅助函数,用于了解任何路由是否处于活动状态,具有以下属性

  • route:string|array = 要针对的路由名称或路由名称数组
  • calls:string default:null = 如果设置此变量,辅助函数将返回指示的字符串或布尔值
  • firstOccurrence:float = 检查 URL 的第一个部分是否与路由匹配

简单案例

<a class="{{ active_route('home', 'active') }}" href="{{ route('home') }}">HOME</a>

具有多个路由的案例

<a class="{{ active_route(['home', 'home-en', 'home-es'], 'active') }}" href="{{ route('home') }}">HOME</a>

嵌套路由的案例

<a class="{{ active_route('product', 'active', true) }}" href="{{ route('product-01') }}">PRODUCT</a>

辅助函数 [get_lang_route_name()]

获取当前路由在另一种语言中的路由名称

<a href="{{ route(get_lang_route_name('en')) }}">Change Lang</a>

辅助函数 [get_lang_route()]

获取当前路由在另一种语言中的 URL

<a href="{{ get_lang_route('en') }}">Change Lang</a>

许可

Navtools 是开源软件,许可证为 MIT 许可证