php – Laravel两款404款式
我有一个主站点和一个管理控制面板.
我希望每个版本有不同的404页面. 我该怎么做?我目前在我的app / Exceptions / Handles.php文件中有以下代码: /** * Render an exception into an HTTP response. * * @param IlluminateHttpRequest $request * @param Exception $exception * @return IlluminateHttpResponse */ public function render($request,Exception $exception) { if($exception instanceof SymfonyComponentHttpKernelExceptionNotFoundHttpException) { $view = $request->is('admin/*') ? 'acp.errors.404' : 'errors.404' ; return response()->view($view,[],404); } return parent::render($request,$exception); } 但我使用包 Trying to get property 'role' of non-object (View: F:DevelopmentRPRsiteresourcesviewslayoutsacp.blade.php) (View: F:DevelopmentRPRsiteresourcesviewslayoutsacp.blade.php) 我在acp.blade.php中使用auth() – > user() – > role来获取用户角色,这个工作正常,没有任何异常.我该怎么解决这个问题? 解决方法
以下是根据路线完成不同404视图的两种方法.两者都允许您拥有这些错误页面:
/resources/views/acp/errors/404.blade.php /resources/views/errors/404.blade.php 将按顺序检查目录,直到找到视图,这意味着您可以有选择地添加自定义错误视图,并在不存在时降至默认值.如果路由不匹配,则它不会查找自定义错误页面. 选项1 覆盖app / Exceptions / Handler.php中的registerErrorViewPaths(): /** * Register the error template hint paths. * * @return void */ protected function registerErrorViewPaths() { parent::registerErrorViewPaths(); if (request()->is('admin/*')) { View::prependNamespace( 'errors',realpath(base_path('resources/views/acp/errors')) ); } } 选项2 创建一个ViewServiceProvider: php artisan make:provider ViewServiceProvider 在config / app.php中注册您的提供者: 'providers' => [ // ... AppProvidersViewServiceProvider::class,], 编辑提供程序的引导方法: /** * Bootstrap services. * * @return void */ public function boot() { if (request()->is('admin/*')) { View::prependNamespace( 'errors',realpath(base_path('resources/views/acp/errors')) ); } } 对于问题的第二部分,auth() – > user()仅在会话中间件运行时可用.如果404是由不存在的路由引起的,则请求不会通过Web中间件,不幸的是会话和身份验证信息将不可用.但是,如果404是由控制器内部触发的ModelNotFoundException引起的,那么Web中间件可能已经运行并且您可以访问该用户. 在错误视图中,您必须检查用户是否已登录: @guest <p>Hello,guest</p> @else <p>Hello,{{ auth()->user()->name }}</p> @endguest 如果这对于您的用例来说还不够好,那么您可能需要尝试Route::fallback(),它允许您定义一个控制器来提供404页面并运行Web中间件. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |