Php 如何';使用';我自己的Laravel中间件中的包?
我在Laravel中使用Php 如何';使用';我自己的Laravel中间件中的包?,php,laravel-5,package,middleware,Php,Laravel 5,Package,Middleware,我在Laravel中使用LaravelGettext包编写了一个本地化中间件,如下所示: <?php namespace App\Http\Middleware; use Closure; class Locale { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next
LaravelGettext
包编写了一个本地化中间件,如下所示:
<?php
namespace App\Http\Middleware;
use Closure;
class Locale {
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next) {
if ($request->method() === 'GET') {
$segment = $request->segment(1);
if (!in_array($segment, config('laravel-gettext.supported-locales'))) {
$segments = $request->segments();
$fallback = session('locale') ?: config('laravel-gettext.fallback-locale');
$segments = array_prepend($segments, $fallback);
return redirect()->to(implode('/', $segments));
}
session(['locale' => $segment]);
LaravelGettext::setLocale($segment);
}
return $next($request);
}
}
通过中间件运行会出现以下错误:
"Class 'App\Http\Middleware\LaravelGettext' not found"
因此,我想我可能必须通过添加以下内容手动导入LaravelGettext
包:
use Xinax\LaravelGettext\LaravelGettext;
这给了我一个例外:
"Non-static method Xinax\LaravelGettext\LaravelGettext::setLocale() should not be called statically"
这让我想知道:中间件中是否有访问包的有效选项?还是我在这里遇到了设计缺陷?嗯,我突然想到我必须导入外观,而不是实际的类本身。所以加上
use Xinax\LaravelGettext\Facades\LaravelGettext;
终于成功了
use Xinax\LaravelGettext\Facades\LaravelGettext;