Laravel same route different controllers for auth and guest users
我正在尝试具有相同的路由主页/,但用于身份验证和来宾用户的控制器不同,但我无法执行此操作。我已经搜索并尝试了所有关于google,stackoverflow等的结果,但都没有奏效。我猜是因为我使用的是Laravel Framework 7.15
版本
1 2 3 4 5 6
| $uses = 'BlogController@index';
if (!is_null(auth ()->user())) {
$uses = 'HomeController@index';
}
Route ::get('/', $uses); |
BlogController适用于来宾,而HomeController适用于经过身份验证的用户。因此,当我为经过身份验证的用户运行代码时,它仅显示Blog(guest)主页,而不显示用户HomeController页面。
感谢您的提前帮助。
您可以尝试这个。
1 2 3 4 5
| Route::get('/', (function() {
return auth()->user()
? app()->make(\\App\\Http\\Controllers\\HomeController::class)->index()
: app()->make(\\App\\Http\\Controllers\\BlogController::class)->index();
})); |
- 谢谢,但是没有用。错误消息是= Action App\\Http\\Controllers\\HomeController@index not defined.
-
你在HomeController中有索引方法吗?
-
是的,我愿意。它与直线向上Route::get('/', 'HomeController@index');一起使用
-
sr,刚刚更新了我的答案。重定向路由操作仅在您已执行该操作时才起作用。因此,现在我们应该制作控制器类并调用索引函数,但是我认为将会有另一种流畅的方式来做到这一点。当我找到它时将更新更好的答案
-
但我建议您应该尝试此解决方案,在控制器中处理视图更好:stackoverflow.com/questions/37618735/…
-
感谢更新后的答案现在可以完美运行了。在将我的信息发布到这里之前,我尝试过对建议问题的答案,但没有成功。但是你的工作了!
-
@bangnokia嘿,我试图将中间件verified添加到路由中,但是我不知道在哪里添加它。你能帮我这个忙吗?
-
显然,该路由绕过了我在HomeController中的构造函数中的$this->middleware(['auth', 'verified']实例
-
@bangnokia所以我想必须将其添加到路线中,
-
@ObinnaIloeje像这样Route::get('/',...)->middleware('auth', 'verify');将您的中间件附加到末尾
-
@bangnokia您不明白,我在问如何将middleware附加到您给我的路线上。如果我按照您所说的常规方式添加它,它将不会显示guest索引页...