7강 - 블레이드 201

@yield, @extends, @section - 마스터 레이아웃 사용하기

페이지마다 반복되는 헤더랑 풋터는 어디에 넣지? 이때 필요한 것이 마스터 레이아웃이다. resources/views/master.blade.php 파일을 만들고, 아래와 같이 HTML 뼈대를 만들어 보자.

<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Laravel 5 Essential</title>
</head>
<body>

  @yield('content')

</body>
</html>

참고 phpStorm은 Emmet을 지원한다. 위 파일에서 ! 만 입력한 상태에서 Tab을 누르면 HTML 기본 뼈대가 채워진다. ul>li*3>aTab 을 한번 해 보면 Emmet 문법을 왜 익혀야 하는지 금방 알 것이다.

resources/views/index.blade.php는 다음과 같이 수정하고, 브라우저에서 확인해 보자. HTML 소스도 반드시 확인해 보자.

@extends('master')

@section('content')
  Your content here !!!
@stop

여기서 @extends라는 키워드는 index.blade.php가 master.blade.php를 상속한다는 뜻이다. 또 @yield('content')@section('content')를 주목하자. content라고 이름 지어진 섹션이 마스터 레이아웃에서 yield('양도하다', '넘겨주다' 라는 뜻) 된다는 의미다. 섹션은 원하는 숫자만큼 여러개 만들 수 있다. 뷰에서 만든 섹션의 이름으로 마스터 레이아웃에서 yield해 주기만 하면 된다. 가령, 이런 것이 가능해 진다.

@extends('master')

@section('style')
  <style>
    body {background: red;}
  </style>
@stop

@section('content')
  Your content here !!!
@stop

@section('script')
  <script>
    alert("Hello Blade~ ^^/");
  </script>
@stop

@include - 하위 뷰 포함하기

resources/views/footer.blade.php를 만들자.

<footer>
  <p>This is footer</p>
</footer>

resources/views/master.blade.php 또는 resources/views/index.blade.php 어디서든 방금 만든 footer 뷰를 불러와 삽입할 수 있다.

@include('footer')



comments powered by Disqus
목록 토글
keyboard_arrow_up