我创建了一个自定义404错误页面,我正在使用我的app.layout来包装它.
但这很奇怪,因为当我收到404错误页面时,即使我已登录登录和注册链接.这是为什么?
当我登录我的页面并编写非现有路由时,我得到了扩展布局的404页面,但似乎Laravel无法访问Auth :: class,并且它不会看到用户是否登录.
因此,我没有看到Logout链接,而是看到"登录"和"注册"链接
将下面的添加到/routes/web.php:
Route::fallback(function(){
return view('errors.404');
});
Run Code Online (Sandbox Code Playgroud)
并添加一个新文件/resources/views/errors/404.blade.php:
Nothing here {{ Auth::user()->name }}: 404!
Run Code Online (Sandbox Code Playgroud)
当然,您可以更改此模板以扩展您要使用的任何模板。
从v5.5.5可用
检查您的app.layout是否包含导航部分.
像这样的布局html:
<div class="content-wrapper">
<!-- Content Header (Page header) -->
@include('partials.crumble_head')
<!-- Main content -->
<section class="content">
@yield('content')
</section>
<!-- /.content -->
</div>
Run Code Online (Sandbox Code Playgroud)
如果您的内容页面扩展了此布局,那么部分内容将不会消失
嗨,答案需要根据我们讨论的内容进行更新.
Open app/Http/Kernel.php. Add below block to the $middleware
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
Run Code Online (Sandbox Code Playgroud)
所以你的代码应该是这样的:
/**
* The application's global HTTP middleware stack.
*
* These middleware are run during every request to your application.
*
* @var array
*/
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
];
Run Code Online (Sandbox Code Playgroud)
现在,您应该可以在views/errors/404.blade页面中访问Auth.确保在Auth之前加上'\'.对于Eg:
{{\Auth::user()->name}}
Run Code Online (Sandbox Code Playgroud)
https://laracasts.com/discuss/channels/laravel/getting-authuser-on-custom-404-page
| 归档时间: |
|
| 查看次数: |
2292 次 |
| 最近记录: |