اذهب إلى المحتوى

السؤال

نشر

أنا أعمل في مشروع باستخدام لارافيل Laravel، وعندما أواجهة مشكلة وأبحث عنها، أجد أنه في كثير من الأحيان يتم إستعمال extends@

@extends('layouts.main')

وفي أحيان أخرى يتم إستعمال include@

@include('layouts.main')

ما الفرق بينهما؟ وهل يمكن إستعمال كلًا منهما مكان الآخر؟

Recommended Posts

  • 0
نشر

يمكن الاستفادة من extends@ لإنشاء قوالب الصفحات بلغة blade، حيث ننشئ ملف عرض قالب يحوي بداخله عدة أقسام بأسماء معينة باستخدام yield@، ولاحقًا يمكن استخدام ملف القالب هذا لإنشاء عدة ملفات عرض، حيث يسمح ذلك بتقليل التكرار لهيكلية بيانات الصفحات المتشابهة وتوحيدها، فمثلًا يمكن إنشاء ملف قالب أساسي لجميع الصفحات view/layouts/main.blade.php كالتالي:

<html>
  <head>
  <title>@yield('header')</title>
  </head>
  <body>
    @yield('content')
  </body>
</html>

ويمكن استخدامه ضمن أي صفحة كالتالي:

@extends('layouts.main')

@section('title')
صفحة فرعية
@endsection

@section('content')
    <h1>أهلًا بكم</h1>
@endsection

وسينتج عن تفسير الصفحة السابقة محتوى HTML التالي:

<html>
  <head>
  <title>الصفحة الرئيسية</title>
  </head>
  <body>
    <h1>أهلًا بكم</h1>
  </body>
</html>

أما include@ فهي تشبه في عملة include في PHP، حيث تقتصر مهمتها على جلب محتوى ملف العرض المذكور وطباعته مكانها، يفيد ذلك في إنشاء مكونات وإعادة استخدامها في أكثر من مكان دون الحاجة لتكرار كتابة هيكليتها في كل مرة، مثلًا إذا كان لدينا المكون views/components/nav.blade.php كالتالي:

<nav>...</nav>

وفي أي مكان ضمن أي ملف عرض آخر استخدمنا المكون السابق باستخدام include@ كالتالي:

@include('components.nav')

<div>..</div>

فبعد تفسير الصفحة السابقة سينتج ما يلي:

<nav>..</nav>

<div>..</div>

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...