Php Laravel 5.8单路由但多控制器
我正在为我的路线使用不同的控制器,但不起作用 这是我的路线代码Php Laravel 5.8单路由但多控制器,php,laravel,routes,laravel-middleware,Php,Laravel,Routes,Laravel Middleware,我正在为我的路线使用不同的控制器,但不起作用 这是我的路线代码 Route::get('{slug}', ['middleware'=>'isPage', 'uses'=>'PageController@view'])->name('viewPage'); Route::get('{modelName}', ['middleware'=>'isUser', 'uses'=>'ModelController@view'])->name('viewModel'
Route::get('{slug}', ['middleware'=>'isPage', 'uses'=>'PageController@view'])->name('viewPage');
Route::get('{modelName}', ['middleware'=>'isUser', 'uses'=>'ModelController@view'])->name('viewModel');
下面是isUser的中间件代码
use Closure;
use App\ModelProfile;
class isUser{
public function handle($request, Closure $next)
{
$slug = $request->route()->parameter('slug');
$model = ModelProfile::where([
['slug', $slug],
['is_status', 'ACTIVE'],
['is_deleted', 'NO']
])->count();
if($model > 0){
return $next($request);
} else {
abort(404);
}
}
这是我的iPage中间件代码
use Closure;
use App\Page;
class isPage{
public function handle($request, Closure $next)
{
$slug = $request->route()->parameter('slug');
$model = Page::where([
['slug', $slug],
['is_status', 'ACTIVE'],
['is_deleted', 'NO']
])->count();
if($model > 0){
return $next($request);
}
}
}
在kernel.php中
'isPage' => \App\Http\Middleware\isPage::class,
'isUser' => \App\Http\Middleware\isUser::class,
如果您找到了解决方案,请阅读此内容-
https://github.com/laravel/framework/issues/27179
如果页面slug与用户slug完全相同,会发生什么情况?您试图做的事情没有一个好的解决方案。@SunnyNegi,这些中间件是用别名注册在Kernel.php
中的吗?此外,中间件类名以小写字母开头。这与类文件名相同吗?@UdoE是的,这些中间件在Kernel.php中注册,与类名相同/filename@N69S不,这是不可能的,因为当我们生成slug时,我们在数据库中设置了一个唯一的签入,如果找到解决方案,请阅读此内容-https://github.com/laravel/framework/issues/27179
如果页面slug与用户slug完全相同,会发生什么情况?您试图做的事情没有一个好的解决方案。@SunnyNegi,这些中间件是用别名注册在Kernel.php
中的吗?此外,中间件类名以小写字母开头。这与类文件名相同吗?@UdoE是的,这些中间件在Kernel.php中注册,与类名相同/filename@N69S不,这是不可能的,因为当我们生成slug时,我们在数据库中放入了一个唯一的检查