2017-01-28 10 views
11

Uczę się Laravel (począwszy od wersji 5.3) i te dwie wyglądają bardzo podobnie, jedyną różnicą, jaką znam jest to, że @include wstrzykuje zmienne rodzica i może również wysyłać inne zmienne.Jaka jest różnica między @yield Laravel i @include?

  • Jaka jest różnica między @yield i @include?
  • Kiedy należy używać @yield?
  • Kiedy należy użyć @include?

Odpowiedz

8

@yield służy głównie do definiowania sekcji w układzie. Gdy ten układ zostanie rozszerzony o @extends, możesz zdefiniować, co dzieje się w tej sekcji z dyrektywą @section w twoich widokach.

Układ zwykle zawiera kod HTML, nagłówek, treść, nagłówek i stopki. Definiujesz obszar (@yield) w układzie, w którym strony rozszerzające szablon będą umieszczać swoje treści. W twoim szablonie głównym zdefiniujesz obszar. Na przykład:

<body> 
    @yield('content') 
</body> 

Powiedzmy strona główna rozciąga się, że układ

@extends('layouts.app') 

@section('content') 
    // home page content here 
@endsection 

Wszelkie HTML można zdefiniować w sekcji zawartości na stronie głównej widoku w sekcji „content” będą wstrzykiwane do układu to przedłużony w tym miejscu.

@include jest używany do wielokrotnego użytku HTML, podobnie jak standardowe dołączanie PHP. Nie ma relacji rodzic/dziecko takich jak @yield i @section.

Gorąco polecam czytanie dokumentacji na szablonach kasetowych na stronie laravel bardziej kompleksowy przegląd

https://laravel.com/docs/5.0/templates

+4

Twoja odpowiedź nie naprawdę aswer pytaniem. Właśnie powiedziałeś, że zarówno '@ yield' i' @ include' wstrzykuje HTML do pliku nadrzędnego. Dokumentacja Laravel jest również bardzo słaba. Nie jest ukierunkowany na osobę, która jest nowa w laravel. Główną różnicą między '@ yield' i' @ include' jest: '@ include' definiuje ** widok ** do wstrzyknięcia rodzicowi. '@ yield' określa ** sekcję **, która ma zostać wstrzyknięta. 'yield 'działa tylko wtedy, gdy twój widok' @ rozszerza' widok rodzica. – user1651105

3

@include i @yield są dwa zupełnie różne typy operacji importowania kod do bieżącego pliku.

@include - importuje zawartość oddzielnego pliku do bieżącego pliku w miejscu, w którym został umieszczony. czyli: plik

Układ:

< some html or other script > 

@include('include.file_name') // "include." indicates the subdirectory that the file is in 

< more html or other script > 

include file (plik ostrze z bloku kodu):

< some cool code here > 

Zawartość 'nazwa_pliku' (również ostrza plik) jest następnie importowany tam, gdzie znajduje się dyrektywa @include.

@yield importuje kod z "sekcji" w pliku podrzędnym (plik ostrza "widok").:

plik Układ:

< some html or other script > 

@yield('needed_section_name') 

< more html or other script > 

Poniższa sekcja jest potrzebna w „Widok” pliku ostrza, który jest ustawiony na „przedłużyć” ten plik układu.

„Widok” Plik ostrza:

@extends('layout.file_name') 
... code as neeeded 

@section('needed_section_name') 
< some cool code here > 
@stop 

... 
more code as needed 

Teraz plik układ będzie importować w sekcji kodu, który pasuje do nazewnictwa używanego.

Więcej na ten temat here ....

Powiązane problemy