syscover / pulsar-navtools
Navtools 包
Requires
- php: ^7.1.3
This package is auto-updated.
Last update: 2024-09-18 02:59:12 UTC
README
安装
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 许可证。