Laravel Blade模板继承页面空白无报错,请求排查问题
问题:Laravel Blade模板继承后页面空白无报错
我是Laravel新手,正在使用Laravel Blade的模板继承功能,编写了一段仅用于在浏览器显示Hello的简单代码,但运行后页面显示空白,浏览器及控制台均无报错信息。以下是我的代码,请求帮忙找出问题所在:
master.blade.php
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>master page</title> </head> <body> <div> @yield('content') </div> </body> </html>
body.blade.php
@extends('master') @section('content') <h1> Hello </h1> @endsection
studentcontroller.php
public function viewmasterpage() { return view('master'); }
web.php
Route::get('/masterpage','studentcontroller@viewmasterpage')->name('masterpage');
问题分析与解决办法
别着急,我帮你找出问题啦,核心问题就在控制器返回的视图上:
- 你返回的是母版视图而非子视图
你的控制器方法viewmasterpage里返回的是view('master'),但实际上你应该返回继承了母版的子视图body.blade.php,也就是把代码改成:
因为母版里的public function viewmasterpage() { return view('body'); }@yield('content')只是个占位符,只有子视图填充这个内容后,返回子视图才会把母版和子视图的内容合并渲染出来。你直接返回母版的话,content区块是空的,页面自然就显示空白啦。
另外还有两个小细节可以检查下,确保万无一失:
- 确认视图文件路径:
master.blade.php和body.blade.php要放在resources/views目录下,如果是放在子目录(比如layouts),那引用的时候要加上路径,比如@extends('layouts.master'),返回视图也要写成view('layouts.body')。 - 清除视图缓存:如果修改后还是没有效果,可以运行命令
php artisan view:clear清除编译后的视图缓存,避免缓存导致新修改不生效。
内容的提问来源于stack exchange,提问作者Parteek Kumar Kherpa
相关产品推荐
相关产品推荐

