116호. 블레이드 레이아웃에 데이터 넘기기 free

2020-01-16

안녕하세요. 삼한사미라더니 어제 오늘은 정말 날이 맑고 춥네요. 오늘은 아주 간단하지만 유용한 팁을 하나 가져왔습니다.


레이아웃의 내용이 페이지마다 달라져야 하는 경우가 있죠. 예를 들어, 타이틀이라던가 오픈 그래프 태그 같은 것들은 페이지마다 다르게 설정해줄 필요가 있습니다.


저는 블레이드의 @section@yield 디렉티브를 이용해서 이를 처리해왔습니다. 기본값이 있는 것은 @section을 그렇지 않은 것은 @yield를 사용했는데요. 아래는 기본값이 있는 타이틀을 @section으로 처리한 예시 입니다.


레이아웃


// resources/views/layouts/default.blade.php

<title>@section('title'){{config('app.name')}}@show</title>

레이아웃을 상속받은 블레이드


// resources/views/posts/show.blade.php
@extends('layouts.default')

@section('title')
[{{ $post->newsletter->title }}] {{ $post->title }}
@endsection

아마 저처럼 처리하시는 분들이 적지 않으셨을 거 같아요.


놀랍게도 아래와 같은 방식으로 레이아웃에 데이터를 바로 전달할 수가 있습니다.


// resources/views/posts/show.blade.php
@extends('layouts.default', ['title' => $title])

왜 기능을 만들어두고 메뉴얼에는 안써두었나 모르겠어요. ㅎㅎ 호불호는 있을 것 같은데, 저는 이 방식도 괜찮은 것 같아요.


그럼 오늘은 여기까지~

즐거운 하루 되세요!


1일 1식 라라벨 116호

2020년 1월 16일


이현석

메쉬 코리아 개발자. 바쁜 팀장님 대신 알려주는 신입 PHP 개발자 안내서를 쓰고, 클린 아키텍처 인 PHP를 번역했습니다. 2020년에 출간될 Laravel Up & Running 2nd Edition을 번역하고 있습니다.