Laravel 5.4,在整个站点中重用if else语句

时间:2017-09-13 13:11:39

标签: php laravel-5

我发现自己需要在整个网站上重复if else语句,因为我有两个网址。一个用于管理员,一个用于用户。我是否必须将控制器分离出来以阻止这种情况,还是有更好的方法来实现这一目标?

网址结构:
管理员 / buildings / {building_id} /租户
用户: /租户


TenantsController.php

public function index(Request $request, $building_id = null)
{

   if($request->user()->hasRole('admin')){
        $building_id = $building_id;
   }else{
        $building_id = Auth::user()->building_id;
   }

   $building = Building::findOrFail($building_id);

   $tenants = User::whereHas('roles', function($q){$q->whereIn('name', ['tenant']);})->where('building_id',$building_id)->paginate(2);

   return view('buildings.tenants.index')->withTenants($tenants)->withBuilding($building);
}

1 个答案:

答案 0 :(得分:1)

使用中间件,中间件提供了一种方便的机制来过滤进入应用程序的HTTP请求。例如,Laravel包含一个中间件,用于验证应用程序的用户是否经过身份验证。如果用户未经过身份验证,则中间件会将用户重定向到登录屏幕。但是,如果用户通过身份验证,则中间件将允许请求继续进入应用程序。如果您想了解有关中间件的更多信息,请查看此页面documentation