【发布时间】:2019-07-05 19:03:03
【问题描述】:
我正在尝试将多个前缀与一个中间件组合在一起:
Route::group(['middleware' => ['centralize']], function () {
Route::group(['prefix' => \App\Utilities\Centralization::setLocale()], function () {
Route::group(['prefix' => \App\Utilities\Centralization::setCountry()], function () {
Route::group(['prefix' => \App\Utilities\Centralization::setCity()], function () {
Route::group(['prefix' => \App\Utilities\Centralization::setArea()], function () {
//routes
});
});
});
});
});
我已将centralize 中间件添加到kernel:
protected $routeMiddleware = [
...
'centralize'=> \App\Http\Middleware\Centralize::class,
...
];
但是中间件根本没有被调用,是不是这里少了什么东西?
编辑:它直接进入房屋的视图,我在 middleware 内部做 dd 但它永远不会到达那里!
编辑:中间件代码:
<?php
namespace App\Http\Middleware;
use App\Utilities\Centralization;
use Closure;
use Illuminate\Http\RedirectResponse;
class Centralize
{
/**
* @var \Illuminate\Http\Request
*/
private $request;
/**
* @var array
*/
private $params;
private $location;
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle(\Illuminate\Http\Request $request, Closure $next)
{
$this->request = $request;
dd('hit');
$this->params = explode('/', $request->getPathInfo());
$this->figureLocale();
$this->figureCountry();
$this->figureCity();
$this->figureArea();
$this->figureLocation();
$redirection = implode('/', $this->params);
if ($request->getPathInfo() !== $redirection) {
return new RedirectResponse($redirection, 302, ['Vary' => 'Accept-Language']);
}
\View::share([
'countries' => Centralization::getCountries(),
'cities' => Centralization::getCities(),
'areas' => Centralization::getAreas(),
'location' => $this->location
]);
return $next($request);
}
private function figureLocale()
{
//...
}
private function figureCountry()
{
//..
}
private function figureCity()
{
//...
}
private function figureArea()
{
//...
}
private function figureLocation()
{
//...
}
}
编辑:我也试过:
Route::middleware(['centralize'])->group(function () {
Route::group(['prefix' => \App\Utilities\Centralization::setLocale()], function () {
Route::group(['prefix' => \App\Utilities\Centralization::setCountry()], function () {
Route::group(['prefix' => \App\Utilities\Centralization::setCity()], function () {
Route::group(['prefix' => \App\Utilities\Centralization::setArea()], function () {
//..
});
});
});
});
});
但结果相同,它永远不会命中中间件!
编辑:使用artisan 和手动清除缓存也不起作用!
【问题讨论】:
-
你得到了什么消息
-
@MD.JubairMizan 它直接进入
home的视图,我在中间件内部做dd但它永远不会到达那里! -
加你
middleware问题代码。 -
能否添加中间件类代码。另请查看this 是否有帮助。
-
请添加中间件代码
标签: php laravel laravel-5.7 laravel-middleware