syscover / laravel-nav-tools
Requires
- php: >=5.6.4
README
安装
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 许可证 许可。