我正在尝试根据当前登录的用户卷动态选择主刀片服务器模板。(此处应转到“ shopowner”身份验证块)
@auth('shopmanager')
@extends('theme::Admins.shopmanager.layout.master')
@endauth
@auth('shopowner')
@extends('theme::Admins.shopowner.layout.master')
@endauth
,但这总是在尝试编译“ shopmanager”主模板时产生错误。它不会进入“ shopmanager” @auth块,因为如果我在该块内打印,它不会打印任何内容。
仅当我完全注释掉该行时,它才起作用。
P.S。
这是主theme::Admins.shopmanager.layout.master
模板文件
不能加载。
@extends('theme::Admins.outline.layout.master')
@include('theme::Admins.shopmanager.layout.common.header')
@include('theme::Admins.shopmanager.layout.common.left-sidebar') // The error throws from inside this view.
@include('theme::Admins.shopmanager.layout.common.footer')
@section('title-head', __('Shop Manager'))
我可以将@auth
检查包在@include
行周围,但要注意的是,应该从编译中跳过此完整文件。
答案 0 :(得分:2)
尝试下面的代码,希望这对您有所帮助:
@if(Auth::check())
@if(Auth::user()->role=='shopmanager')
@extends('theme::Admins.shopmanager.layout.master')
@else
@extends('theme::Admins.shopowner.layout.master')
@endif
@endif
答案 1 :(得分:0)
如果您那时候有多重身份验证,请尝试以下方法:
@if(Auth::guard('shopmanager')->user())
@extends('')
@else
@extends('')
@endif
就我而言,我正在使用此代码来处理经理,客户和管理员。
答案 2 :(得分:0)
已解决
根据我的学习,@extend(...)
将始终被编译,而不考虑外部包装条件。因此必须移至基于动态变量的块。
@auth('shopmanager')
@php
$masterTemplate = 'theme::Admins.shopmanager.layout.master';
@endphp
@endauth
@auth('shopowner')
@php
$masterTemplate = 'theme::Admins.shopowner.layout.master';
@endphp
@endauth
@extends($masterTemplate)