Blade Template

서린·2024년 5월 9일
0

greenstudy

목록 보기
42/44
post-thumbnail

Blade Template이란?

  • 라라벨에 포함된 단순하지만 강력한 템플릿 엔진
  • 블레이드 템플릿 구문이 php 코드로 컴파일 되어 동작
  • 블레이드 지시어를 통해 템플릿 상속 및 데이터 표시, PHP 제어 구조에 대해 편의성 제공
  • 파일 확장자는  .blade.php를 사용
  • 일반적으로 파일은 resources/views 디렉토리에 배치

주석

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>layout</title>
</head>
<body>
    <h1>이거는 보입니다.</h1>
    {{-- <h1>주석 처리되서 안보입니다.</h1> --}}
    <p>내용내용</p>
</body>
</html>

데이터 출력

  • {{ 출력할 데이터 }} 로 작성
  • {{ }} 문은 XSS 공격을 방지하기 위해 PHP의 htmlspecialchars 함수를 통해 자동으로 처리
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>layout</title>
</head>
<body>
    <h1>{{ $name }}</h1>
</body>
</html>

@include(뷰[, 배열])

  • 다른 뷰를 포함
  • include할 뷰에 데이터를 보내고 싶을 경우 두번째 아규먼트에 배열 셋팅
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>layout</title>
</head>
<body>
    @include('layout.header')
    @include('layout.footer', ['key1' => '홍길동'])
</body>
</html>
<h1>헤더입니다.</h1>
<h1>풋터입니다.</h1>
<p>파라미터로 받은 값은 {{ $key1 }} 입니다.</p>

@extends(뷰)

  • 자식 뷰가 상속해야 하는 레이아웃을 지정
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>layout</title>
</head>
<body>
    <h1>레이아웃 뷰 입니다.</h1>
</body>
</html>
{{-- 상속 --}}
@extends('layout.layout')

@yield(섹션명[, 기본값])

  • 자식 뷰에서 해당하는 section에게 자리를 양도
  • 자식한테 section이 없을 경우는 기본값 출력
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>@yield('title', '부모 타이틀')</title>
</head>
<body>
    <h1>레이아웃 뷰 입니다.</h1>
    <p>@yield('content', '부모 콘텐츠')</p>
</body>
</html>
{{-- 상속 --}}
@extends('layout.layout')

{{-- @yield & @section --}}
@section('title', '자식 타이틀')

@section(섹션명, 출력값)

  • 부모 뷰에 해당하는 @yield 또는 @section~@show 에 삽입
  • @section~@show의 경우 자식 뷰에 해당하는 @section이 없을 경우 부모의 것이 실행
  • 여러 처리를 할 필요가 있다면 @section ~ @endsection으로 묶어서 작성
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>@yield('title', '부모 타이틀')</title>
</head>
<body>
    @section('main')
    <h2>부모 main입니다.</h2>
    @show

    @section('card')
    <h2>부모 card입니다.</h2>
    @show
</body>
</html>
{{-- 상속 --}}
@extends('layout.layout')

{{-- @yield & @section --}}
@section('title', '자식 타이틀')

@section('main')
<h2>자식 main입니다.</h2>
@endsection

if 와 반복문

{{-- @if : 조건문 --}}
@if($gender === 'F' ) 
    <span>성별 : 여자</span>
@elseif($gender === 'M')
    <span>성별 : 남자</span>
@else
    <span>성별 : 기타</span>
@endif
<hr>
{{-- 반복문 --}}
{{-- @for ~ @endfor : for 반복문 --}}
@for($i = 0; $i < 5; $i++)
    <span>for : {{$i}}</span>
@endfor
<hr>
{{-- @foreach ~ @endforeach : foreach 반복문 --}}
<h2>foreach</h2>
{{-- $loop : foreach, forelse에서 루프의 정보를 담고 있는 자동으로 생성되는 객체 --}}
@foreach($data as $key => $val)
    <h4>남은 루프 횟수 : {{$loop->remaining}}</h4>
    <span>{{$key." : ".$val}}</span>
    <br>
@endforeach
<hr>

{{-- @forelse ~ @empty ~ @endforelse : 루프를 할 데이터의 길이가 1이상이면 @forelse처리, 배열의 길이가 0이면 @empty의 처리를 합니다. --}}
<h2>forelse 문</h2>
@forelse($data2 as $key => $val)
    <span>{{$key." : ".$val}}</span>
    <br>
@empty
<span>빈 배열입니다.</span>
@endforelse

<hr>
profile
개발 일기 ( •̀ ω •́ )✧

0개의 댓글

관련 채용 정보