extends و section

378

فایلی بنام app.blade.php در مسیر resources/views/layouts است که دارای ساختار کامل html  را متصور شوید:

<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <!-- CSRF Token -->
    <meta name="csrf-token" content="{{ csrf_token() }}">

    <title>{{ config('app.name', 'عنوان') }}</title>

    <!-- Scripts -->
    <script src="{{ asset('js/app.js') }}" defer></script>

    <!-- Fonts -->
    <link rel="dns-prefetch" href="//fonts.gstatic.com">
    <link href="https://fonts.googleapis.com/css?family=Nunito" rel="stylesheet" type="text/css">

    <!-- Styles -->
    <link href="{{ asset('css/app.css') }}" rel="stylesheet">
</head>
<body>
    <div id="app">

            <div class="container">
                <a class="navbar-brand" href="{{ url('/') }}">
                    {{ config('app.name', 'عنوان سایت') }}
                </a>

            </div>
 

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

حال فایل دیگری بنام login.blade.php را در مسیر resources/views را با محتویات زیر نیز متصور شوید:

@extends('layouts.app')

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

                <div class="card-body">
                    <!----

                      نمایش فرم لاگین

                    ---->
                </div>
            </div>
        </div>
    </div>
</div>
@endsection

دستور اول (extends('layouts.app')) فایل app.blade.php که در قسمت قبل توضیح آن ارائه شد را ضمیمه میکند. اگر دقت کنید در انتهای این فایل دستور   yield('content') وجود داشت. حال برگردیم به فایل آخر (یعنی login.blade.php)، مشاهده می فرمائید که کد هایی بین section('content') و endsection قرار داده شده اند. محتویات بین این دو تگ در فایل app.blade.php در محلی که دستور yield('content') قرار دارد چاپ خواهند شد.

بطور خلاصه آنچه در خروجی چاپ خواهد شد شبیه این می باشد:

<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <!-- CSRF Token -->
    <meta name="csrf-token" content="{{ csrf_token() }}">

    <title>{{ config('app.name', 'عنوان') }}</title>

    <!-- Scripts -->
    <script src="{{ asset('js/app.js') }}" defer></script>

    <!-- Fonts -->
    <link rel="dns-prefetch" href="//fonts.gstatic.com">
    <link href="https://fonts.googleapis.com/css?family=Nunito" rel="stylesheet" type="text/css">

    <!-- Styles -->
    <link href="{{ asset('css/app.css') }}" rel="stylesheet">
</head>
<body>
    <div id="app">

            <div class="container">
                <a class="navbar-brand" href="{{ url('/') }}">
                    {{ config('app.name', 'عنوان سایت') }}
                </a>

            </div>
 

        <main class="py-4">

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

                <div class="card-body">
                    <!----

                      نمایش فرم لاگین

                    ---->
                </div>
            </div>
        </div>
    </div>
</div>

        </main>
    </div>
</body>
</html>




از مجموع 1 رأی

فاقد نظر