在定义要渲染的视图时,我试图根据变量集包含一些视图。
这是我渲染视图的时候:
switch (Auth::user()->role) {
case 'ADMINISTRADOR':
return View::make('admin');
break;
case 'CAPTURISTA':
return View::make('capturista');
break;
case 'GERENTE DE DEPARTAMENTO':
return View::make('gerente');
break;
case 'SUPERVISOR DE COMPRAS':
return View::make('supervisor', array('supervisor'=>true));
break;
case 'GERENTE ADMINISTRATIVO':
return View::make('administrativo');
break;
}
所以我在视图中尝试了很多东西,以便加载一些视图 ONLY 如果supervisor是真的(最后如果是根据我的代码设置的话)。
@if(isset($supervisor))
@include('includes.boss.supervisor.delivers_modal')
@include('includes.boss.supervisor.prices_modal')
@include('includes.boss.supervisor.providers_modal')
@endif
@if({{isset($supervisor)}})
@include('includes.boss.supervisor.delivers_modal')
@include('includes.boss.supervisor.prices_modal')
@include('includes.boss.supervisor.providers_modal')
@endif
<?php if(isset($message)) : ?>
@section('message')
<p>hey all</p>
@endsection
<?php endif; ?>
此外,我尝试为每个视图设置supervisor
变量,自然为false和true。
@if($supervisor)
@include('includes.boss.supervisor.delivers_modal')
@include('includes.boss.supervisor.prices_modal')
@include('includes.boss.supervisor.providers_modal')
@endif
这些都不起作用,我应该如何实现呢?
*以防万一,我正在使用会话......
答案 0 :(得分:2)
自Laravel 5.4起,您可以使用@includeWhen
。如[{3}}中所述:
包括子视图
如果您希望
@include
视图取决于给定的布尔值 条件,您可以使用@includeWhen
指令:@includeWhen($boolean, 'view.name', ['some' => 'data'])
答案 1 :(得分:1)
为什么不,而不是显示特定的视图,你为每个视图创建一个路由,然后根据用户角色,你将他重定向到其中一个页面?
switch (Auth::user()->role) {
case 'ADMINISTRADOR':
return redirect('administrador');
case 'CAPTURISTA':
return redirect('capturista');
...
然后在routes.php
:
Route::get('administrador', function() {
return view('admin');
// for L4: View::make('admin');
});
//and one more for each role...
如果您使用的是Laravel 4,则需要使用重定向外观,例如Redirect::to(..)
;
在routes.php
文件中,您将为每个视图制作路线。您可以过滤路由以确保用户具有其尝试访问的角色。有关Laravel 4.2过滤器的更多信息,请http://laravel.com/docs/4.2/routing#route-filters和此处http://laravel.com/docs/4.2/controllers#controller-filters
对于Laravel 5,使用middlware检查用户是否有权限:http://laravel.com/docs/5.0/middleware