You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中扩展login.blade.php后页面无内容,如何排查错误?

问题分析与解决

你的核心问题是Laravel模板继承的逻辑搞反了,导致登录区块无法正常渲染。

错误原因

Laravel的模板继承规则是:父模板定义可填充的@yield区块,子模板通过@extends继承父模板,再用@section填充父模板的区块。你现在把login.blade.php当作父模板,welcome.blade.php当作子模板,但login.blade.php里的@section('login')是在定义区块内容,而非提供可填充的占位,所以@yield('login')无法获取到内容。

修正方案

方案一:调整模板继承关系

  1. 修改welcome.blade.php,移除错误的@extends,让它作为独立的父模板:
<!Doctype HTML>
<html>
<head>
    <title>Laravel</title>
    <link rel="stylesheet" href="{{ asset('css/welcome.css') }}">
</head>
<body class="background">
    <div class="login-container">
        @yield('login')
    </div>
</body>
</html>
  1. 修改login.blade.php,让它继承welcome模板并填充login区块:
@extends('welcome')

@section('login')
    <x-guest-layout>
        ...other code
    </x-guest-layout>
@endsection

方案二:直接引入登录组件(更简单)

如果不需要模板继承,可直接用@include引入登录内容:

  1. 修改login.blade.php,移除@section和@endsection,直接保留内容:
<x-guest-layout>
    ...other code
</x-guest-layout>
  1. 修改welcome.blade.php,移除@extends,用@include替换@yield:
<!Doctype HTML>
<html>
<head>
    <title>Laravel</title>
    <link rel="stylesheet" href="{{ asset('css/welcome.css') }}">
</head>
<body class="background">
    <div class="login-container">
        @include('auth.login')
    </div>
</body>
</html>

额外注意

x-guest-layout组件本身可能包含完整的HTML结构(如<html>、<body>标签),直接嵌套到welcome的<body>里会导致HTML结构错误。如果出现样式或布局异常,需要调整x-guest-layout的内容,或者直接编写登录表单的原生HTML代码。

内容的提问来源于stack exchange,提问作者ADITYA DIXIT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 06:33:13