Laravel 5.2一组路由中的变量

华氏隐身

我建立了一个多语言的网站,为了显示正确的语言,我做了这样的事情:

Routes.php:

Route::group(['middleware' => 'web', 'prefix' => '{locale}'], function () {

Route::auth();
Route::get('home', 'HomeController@index');
etc...

});

我的控制器:

<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use App\Http\Requests;
use Illuminate\Http\Request;

class HomeController extends Controller
{
    public function index($locale)
    {
      app()->setLocale($locale);
      return view('home');
    }
}

如您所见,我从前缀获取局部变量,并在每个函数中将应用设置为局部。

这是完美的工作方式,但我想知道是否有更好的方法?我觉得有点多余。

我当时想直接在路线组中设置本地应用。像这样:

Route::group(['middleware' => 'web', 'prefix' => '{locale}'], function ($locale) {

app()->setLocale($locale);

Route::auth();
Route::get('home', 'HomeController@index');

...
});

但这显然是行不通的。是否有人已经处理过这种事情?

华氏隐身

几天前我找到了解决方案,我想在这里分享。

答案实际上很简单:中间件!

首先创建一个新的中间件(在我的情况下为LocaleMiddleware)

class LocaleMiddleware
{
    public function handle($request, Closure $next)
    {
        app()->setLocale($request->locale);
        return $next($request);
    }
}

然后,您可以简单地将中间件添加到App / Kernel.php中的Web中间件组。

protected $middlewareGroups = [
    'web' => [
        ...

        \App\Http\Middleware\VerifyCsrfToken::class,
        \App\Http\Middleware\LocaleMiddleware::class,
    ],
    'api' => [
        'throttle:60,1',
    ],
];

希望这可以帮助 !

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

路由中的可选参数 - Laravel 5

来自分类Dev

如何在另一个路由组中添加路由组。Laravel 5

来自分类Dev

Laravel 5-路由

来自分类Dev

Laravel路由过滤器在Laravel 5

来自分类Dev

Laravel 5路由

来自分类Dev

Laravel 5命名路由错误

来自分类Dev

Laravel 5路由组控制器

来自分类Dev

如何只更新FormRequest规则中存在的一组字段并忽略laravel 5中的其余字段?

来自分类Dev

如何在Laravel 5的路由中向中间件添加多个项目

来自分类Dev

Laravel 5:在路由中获取Ajax数据并传递给控制器

来自分类Dev

Laravel 5:在路由中获取Ajax数据并传递给控制器

来自分类Dev

如何在Laravel的路由中使用变量?

来自分类Dev

Laravel 5:处理动态和静态路由

来自分类Dev

Laravel 5路由前缀

来自分类Dev

Laravel 5如何验证路由参数?

来自分类Dev

Laravel 5 / Codeception无法正确路由

来自分类Dev

Laravel 5使用前缀进行路由

来自分类Dev

Laravel 5:自定义路由

来自分类Dev

laravel5中的路由问题

来自分类Dev

Laravel 5:路由可选参数问题

来自分类Dev

Laravel 5:无法发布以路由资源

来自分类Dev

laravel 5:路由身份验证错误

来自分类Dev

检查Laravel 5中的通配符路由

来自分类Dev

Laravel 5来自路由组中过滤器的异常路由

来自分类Dev

在Laravel 5中设置全局变量

来自分类Dev

Laravel 5包含变量视图

来自分类Dev

Laravel 5 Route :: Group与公共变量

来自分类Dev

Laravel 5属性变量-Getter问题

来自分类Dev

在PHP函数内部使用变量(Laravel 5)