【问题标题】:Laravel @parent not workingLaravel @parent 不工作
【发布时间】:2019-01-03 04:00:27
【问题描述】:

我是 laravel 的新手,正在尝试为我的应用创建一个模板,我使用 @parent,如下所示 'https://laravel.com/docs/5.6/blade#introduction' 但它似乎不起作用,请检查下面的代码,我做错了什么?

app.blade.php

<!DOCTYPE html>
<html>
<head>
    <title>{{ config('app.name', 'Laravel') }} @yield('title')</title>
</head>
<body>
    <div id="app">

        @section('heading')
        <h1>Testing</h1>
        @endsection

        <nav class="navbar navbar-expand-md navbar-light navbar-laravel">
            <div class="container">
                <a class="navbar-brand" href="{{ url('/') }}">
                    {{ config('app.name', 'Laravel') }}
                </a>
                <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="{{ __('Toggle navigation') }}">
                    <span class="navbar-toggler-icon"></span>
                </button>

                <div class="collapse navbar-collapse" id="navbarSupportedContent">
                    <!-- Left Side Of Navbar -->
                    <ul class="navbar-nav mr-auto">

                    </ul>

                    <!-- Right Side Of Navbar -->
                    <ul class="navbar-nav ml-auto">
                        <!-- Authentication Links -->
                        @guest
                            <li class="nav-item">
                                <a class="nav-link" href="{{ route('login') }}">{{ __('Login') }}</a>
                            </li>
                            <li class="nav-item">
                                <a class="nav-link" href="{{ route('register') }}">{{ __('Register') }}</a>
                            </li>
                        @else
                            <li class="nav-item dropdown">
                                <a id="navbarDropdown" class="nav-link dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" v-pre>
                                    {{ Auth::user()->name }} <span class="caret"></span>
                                </a>

                                <div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown">
                                    <a class="dropdown-item" href="{{ route('logout') }}"
                                       onclick="event.preventDefault();
                                                     document.getElementById('logout-form').submit();">
                                        {{ __('Logout') }}
                                    </a>

                                    <form id="logout-form" action="{{ route('logout') }}" method="POST" style="display: none;">
                                        @csrf
                                    </form>
                                </div>
                            </li>
                        @endguest
                    </ul>
                </div>
            </div>
        </nav>

        <main class="py-4">
            @yield('content')
        </main>
    </div>
</body>
</html>

我在这个文件中有一个部分('标题')。 现在我有另一个视图 register.blade.php

@extends('layouts.app')

@section('title','Testing')

@section('heading')
    @parent
@endsection

@section('content')
<div class="container">
    <div class="row justify-content-center">
        <div class="col-md-8">
            <div class="card">
                <div class="card-header">{{ __('Register') }}</div>

                <div class="card-body">
                    <form method="POST" action="{{ route('register') }}" aria-label="{{ __('Register') }}">
                        @csrf

                        <div class="form-group row">
                            <label for="name" class="col-md-4 col-form-label text-md-right">{{ __('Name') }}</label>

                            <div class="col-md-6">
                                <input id="name" type="text" class="form-control{{ $errors->has('name') ? ' is-invalid' : '' }}" name="name" value="{{ old('name') }}" required autofocus>

                                @if ($errors->has('name'))
                                    <span class="invalid-feedback" role="alert">
                                        <strong>{{ $errors->first('name') }}</strong>
                                    </span>
                                @endif
                            </div>
                        </div>

                        <div class="form-group row">
                            <label for="email" class="col-md-4 col-form-label text-md-right">{{ __('E-Mail Address') }}</label>

                            <div class="col-md-6">
                                <input id="email" type="email" class="form-control{{ $errors->has('email') ? ' is-invalid' : '' }}" name="email" value="{{ old('email') }}" required>

                                @if ($errors->has('email'))
                                    <span class="invalid-feedback" role="alert">
                                        <strong>{{ $errors->first('email') }}</strong>
                                    </span>
                                @endif
                            </div>
                        </div>

                        <div class="form-group row">
                            <label for="password" class="col-md-4 col-form-label text-md-right">{{ __('Password') }}</label>

                            <div class="col-md-6">
                                <input id="password" type="password" class="form-control{{ $errors->has('password') ? ' is-invalid' : '' }}" name="password" required>

                                @if ($errors->has('password'))
                                    <span class="invalid-feedback" role="alert">
                                        <strong>{{ $errors->first('password') }}</strong>
                                    </span>
                                @endif
                            </div>
                        </div>

                        <div class="form-group row">
                            <label for="password-confirm" class="col-md-4 col-form-label text-md-right">{{ __('Confirm Password') }}</label>

                            <div class="col-md-6">
                                <input id="password-confirm" type="password" class="form-control" name="password_confirmation" required>
                            </div>
                        </div>

                        <div class="form-group row mb-0">
                            <div class="col-md-6 offset-md-4">
                                <button type="submit" class="btn btn-primary">
                                    {{ __('Register') }}
                                </button>
                            </div>
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </div>
</div>
@endsection

现在我正在扩展这个文件并使用@parent,所以标题部分是从父视图加载的,但它不起作用,任何帮助将不胜感激,在此先感谢

【问题讨论】:

  • 当医生没有完全听取患者问题时会发生这种情况,就像你没有阅读完整的帖子一样,无论如何我宁愿讨论我提出的问题而不是回答没有的人有什么好做的,再见
  • 我确实阅读了完整的帖子,但没有发现问题所在。相反,我发现“不工作”两次。所以现在我可以假设你收到一条实际的错误消息,你有重复的内容,你根本没有得到内容......许多“不起作用”的方式,但不是试图更好地解释同样的人,你正在寻求帮助,你抱怨,所以我会保留答案和时间来找到他们自己,谢谢,再见
  • 我在 Laravel 5.8 中苦苦挣扎,@endsection@show 之间的区别以及我是否需要 @parent 而我从版本 4 开始使用 Laravel 5 年了。我发现这个问题真的很有帮助,Tân Nguyễn 的回答给我带来了我需要的洞察力。文档很好,但有时我需要 StackExchange 的答案来推动我朝着正确的方向前进。

标签: php laravel laravel-blade


【解决方案1】:

documentation 中,他们使用@show 而不是@endsection。你试过了吗?

【讨论】:

  • 它在我用@show替换它后工作,但它一直显示,我只想在某些页面上显示这个部分,现在我想我误解了这个指令,它只是为了扩展部分,而不是当我想在某些页面上有条件地显示它时
  • 没错,如果您不想默认显示任何内容,则一个部分可以为空,但仍需要扩展它的能力。
  • 这个小小的交流也帮助我终于获得了与@endsection@show@parent的“尤里卡”时刻。
【解决方案2】:

@endsection 指令将只定义一个部分,而@show 将定义并立即生成该部分。 在 app.blade 你使用

@section('heading')
    <h1>Testing</h1>
@show

在 register.blade 中你可以使用

@section('heading')
    @parent
@endsection

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-19
    • 2018-02-21
    • 2016-01-20
    • 2018-07-22
    • 2018-02-12
    • 2014-04-13
    相关资源
    最近更新 更多