laravel - 如何根据用户身份验证更改扩展哪个模板
问题描述
我使用的是 Laravel 6.20.11,并且我已经发布了 Laravel 刀片错误模板。我需要发生的是,如果用户经过身份验证,错误消息会扩展内部布局,如果没有,它会扩展公共布局,如下所示:
@auth
@extends ('int-layouts.partials.wrapper')
@section ('error')
<div class="be-content">
<div class="main-content container-fluid">
<div class="container py-5">
<div class="row">
<div class="col-lg-8">
<div class="text-block">
<h1>404 - Not Found</h1>
<p class="text-muted text-uppercase mb-4">Sorry, we couldn't find the page you were looking for.
Please contact the administrator<br/>
Or go back to the <a class="navbar-brand py-1" href="/controlpanel/">Dashboard</a></p>
</div>
</div>
</div>
</div>
</div>
</div>
@endsection
@endauth
@guest
@extends ('ext-layouts.master')
@section('error')
<div class="container py-5">
<div class="row">
<div class="col-lg-8">
<div class="text-block">
<h1>404</h1>
<p class="text-muted text-uppercase mb-4">Sorry,You are trying to reach the page that does not exist.<br>
Please contact the administrator <br/> Or go back to the <a class="navbar-brand py-1" href="/">Home Page</a></p>
</div>
</div>
</div>
</div>
@endsection
@endguest
我遇到的问题是,当我使用abort(404)
或尝试访问不存在的路由来测试 404 错误时,错误消息会显示两次,并且即使用户不在,页面也会继承 int-layouts.partials.wrapper t 认证。
这是预期的行为还是我在刀片文件中做错了什么?
解决方案
您可以尝试在一个@extends
指令中使用条件:
@extends (auth()->check() ? 'int-layouts.partials.wrapper' : 'ext-layouts.master')
然后你可以在你的部分中使用这个之后的条件。
@section('error')
@auth
@else
@endif
@endsection
该@extends
指令实际上并不像大多数指令那样将输出直接返回到编译结果中。为此编译的 PHP 保存在一个数组中,以便稍后添加。
指令中的所有( )
内容都被用作调用make
View Factory 的文字:
"<?php echo \$__env->make({$expression}, \Illuminate\Support\Arr::except(get_defined_vars(), ['__data', '__path']))->render(); ?>"
如果你找到了这个 Blade 模板的编译视图,你会看到:
<?php echo \$__env->make(auth()->check ? 'int-layouts.partials.wrapper' : 'ext-layouts.master', \Illuminate\Support\Arr::except(get_defined_vars(), ['__data', '__path']))->render(); ?>
执行此编译视图时,第一个参数make
最终是您的视图名称。
推荐阅读
- angular - Angular Transferstate 预渲染了两次 - html 中的 2 个 app-state 脚本标签和 2x 由 Angular 注释预渲染
- javascript - 结合 limitToFirst() 和 limitToLast() 会导致意外行为
- java - How to get all values from a table in spring boot with where condition?
- node.js - Socket.IO - 客户端在中间件错误后不断尝试重新连接
- python-3.x - 在具有 `spec=True` 的模拟方法上使用 `__name__`
- migration - 将 SharePoint 站点从多租户场备份和还原到单独的场
- excel - 将 Excel 用户表单数据发布到匹配条件的多行
- python - 在 macbook m1 上安装 h5py 一直失败
- ios - 将构建分发到应用商店连接时出现应用商店连接操作错误
- google-cloud-dataflow - 云数据流 - 使用的机器数量