تغيير عنوان كل صفحة تستخدم نفس ال Layout
إذا كان لديك مجموعة من الصفحات تستخدم نفس ال Layout
وتريد تخصيص عنوان لكل صفحة يظهر في تبويب المتصفح
يمكنك استخدام @yield داخل ال Layout وتحديد قيمة العنوان باستخدام @section داخل كل صفحة
لدينا ال Layout التالي الذي تستخدمه الصفحات ويحتوي على عنوان ثابت وهو Page
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Page</title>
</head>
<body>
<div class="main-content">
@yield('content')
</div>
</body>
</html>وتستخدم صفحة ال Dashboard هذا ال Layout بالشكل التالي
@extends('layouts.main')
@section('content')
Dashboard Page
@endsectionوتستخدم صفحة ال Profile نفس ال Layout بهذا الشكل
@extends('layouts.main')
@section('content')
Profile Page
@endsectionالآن عنوان تبويب المتصفح سيكون Page في الصفحتين لأن العنوان مكتوب بشكل ثابت داخل ال Layout
لجعل العنوان يتغير حسب الصفحة سنستبدل العنوان الثابت باستخدام @yield
<title>@yield('title', 'Default Title')</title>القيمة title هي اسم ال Section التي سنحددها داخل كل صفحة
والقيمة Default Title هي العنوان الافتراضي الذي سيظهر إذا لم تحدد الصفحة هذه ال Section
وهنا كود ال Layout بعد التعديل
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>@yield('title', 'Default Title')</title>
</head>
<body>
<div class="main-content">
@yield('content')
</div>
</body>
</html>الآن نحدد عنوان صفحة ال Dashboard باستخدام @section بهذا الشكل
@extends('layouts.main')
@section('title', 'Dashboard')
@section('content')
Dashboard Page
@endsectionثم نحدد عنوان صفحة ال Profile بنفس الطريقة
@extends('layouts.main')
@section('title', 'Profile')
@section('content')
Profile Page
@endsection- لاحظ أن الصيغة المختصرة @section('title', 'Dashboard') لا تحتاج إلى @endsection لأننا مررنا قيمة ال Section مباشرة
- الآن عند فتح صفحة ال Dashboard سيظهر عنوان Dashboard في تبويب المتصفح وعند فتح صفحة ال Profile سيظهر عنوان Profile
- وأي صفحة تستخدم نفس ال Layout ولا تحدد ال Section المسماة title سيظهر لها العنوان الافتراضي Default Title