Laravel中如何实现数据库admins表is_admin值为0时隐藏指定div
Laravel权限控制隐藏DIV实现方案
1 优化控制器传参(建议调整)
你当前控制器的传参写法可以统一合并数据,避免视图取值异常:
function dashboard(Request $request){ $data = ['LoggedUserInfo'=>Admin::where('id','=', session('LoggedUser'))->first()]; $count = \DB::table('candidates')->count(); $count2 = \DB::table('admins')->count(); $data1 = \DB::table('admins')->paginate(10); // 合并所有变量传递到视图 return view('dashboard', array_merge($data, compact('count','count2','data1'))); }
2 模板端添加条件判断
方案A:服务端不渲染隐藏内容(推荐,安全性更高)
直接用Blade条件指令包裹需要隐藏的DIV,is_admin === "0"时不会输出这段HTML到前端:
{{-- 只有is_admin不等于0时才渲染该DIV --}} @if($LoggedUserInfo->is_admin !== "0") <div class="c1" id="l1"> <div class="container"> <div class="card"> <p class="p">No. of Candidates: {{$count}}</p> </div> <div class="card"> <p class="p">No. of Sub Admins: {{$count2}}</p> </div> </div> </div> @endif
如果要兼容LoggedUserInfo为空的场景,避免报错可以调整判断条件:
@if(!empty($LoggedUserInfo) && $LoggedUserInfo->is_admin !== "0") <!-- DIV内容 --> @endif
方案B:仅前端隐藏DOM
如果需要保留DOM结构只是隐藏显示,可以直接加行内样式控制:
<div class="c1" id="l1" @if($LoggedUserInfo->is_admin === "0") style="display:none" @endif> <div class="container"> <div class="card"> <p class="p">No. of Candidates: {{$count}}</p> </div> <div class="card"> <p class="p">No. of Sub Admins: {{$count2}}</p> </div> </div> </div>
内容的提问来源于stack exchange,提问作者Dhruv
相关产品推荐
相关产品推荐

