SKILL/LARAVEL

블레이드

Jedy_Kim 2017. 11. 25. 17:13
728x90

블레이드

라라벨의 템플릿 언어인 동시에 HTML 컴파일 엔진이다.

블레이드 문법으로 쓴 템플릿은 .blade.php 확장자를 가져야 하며,

resources/views 디렉터리 아래에 저장해야 한다.


변수를 이용한 문자열 보간


resources/views/welcome.blade.php

<h1>{{ $greeting or 'Hello' }} {{ $name or '' }}</h1>


블레이드는 문자열 보간을 위해 이중 중괄호{{ }}를 이용한다.

{{ $name }}은 <?= $name;?> PHP 문법과 같다.


{{ $greeting or 'Hello' }}는 <?= isset($greeting) ? "{$greeting}" : 'Hello'; ?>와 같다.


블레이드는 XSS(cross-site scripting) 공격으로부터 서비스를 보호하기 위해 문자열을 보간할 때 특수 문자를 이스케이프(escape)한다. 이스케이프하지 않은 채로 문자열을 뷰에 포함하려면 {!! var !!}문법을 이용한다.


블레이드 내의 자바스크립트에서 문자열 보간을 사용한다면 @{{}} 문법을 써야 한다.


주석

블러드에서 주석은 {{--주석--}} 형식을 사용한다.


**브라우저에서 코드의 실행결과를 보는법 Mac용 크롬 Cmd + Opt + u


제어구조

블레이드는 모든 제어 구조에 이메일 기호(@)를 이용하고, end로 시작하는 키워드로 제어 구조의 끝을 표시한다.

조건문

@if($itemCount = count($item))


@elseif/@else


@endif


그리고 PHP에 없는 @unless(조건식)도 쓸 수 있다. if(! 조건식)과 같다.


반복문

<ul>

@foreach($items as $item)

<li>{{ $item }}</li>

@endforeach

</ul>


또한, @foreach뿐만 아니라 @for, @while도 사용할 수 있다.


그리고 PHP에는 없는 @forelse라는 특수한 제어 구조가 있다

@forelse는 @if와 @foreach의 결합이다.

뷰로 넘어온 배열에 값이 있으면 @forelse를 타고,

그렇지 않으면 @empty를 탄다.


템플릿 상속

'중복 제거'는 개발자에게 숙명과도 같은 일이다. 가령 모든 뷰페이지마다 HTML 헤더와 네비게이션 메뉴를 추가해야 하는데,

뷰 페이지와 수가 전부 천 개인 상황이라면 복사 붙여넣기로 HTML헤더와 네비게이션 메뉴를 추가하는 방식으로 개발한다면

두 가지 문제가 있다.

1. 공통된 부분에 변경이 필요하면 페이지 천 개를 일일이 수정해야 한다.

2. 페이지 천 개의 공통 부분이 모두 같다고 확신할 수 없다.


resources/views/layouts/master.blade.php

<!DOCTYPE html>

<html lang="en">

<head>

  <meta charset="UTF-8">

  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <meta http-equiv="X-UA-Compatible" content="ie=edge">

  <title>Document</title>

</head>

<body>

  @yield('content');

</body>

</html>


resources/views/welcome.blade.php

@extends('layout.master');

      @section('content');

        <p>저는 자식 뷰의 'content' 섹션입니다.</p>

      @endsection


마스터 레이아웃의 @yield('content') 부분인데, 나를 상속받는 자식이 가진 content라고 이름 붙인 섹션의 내용을 여기에 출력하겠다는 의미이다. 


자식뷰의 첫 줄에는 @extends('layouts.master')가 있는데, '이 파일은 resources/views/layouts 디렉터리 아래에 있는 master.blade.php라는 부모를 상속한다'는 뜻이다.



반응형

'SKILL > LARAVEL' 카테고리의 다른 글

일반 php로 알아보는 페이지나누기 원리!  (0) 2017.11.23
뷰와 데이터 바인딩  (0) 2017.11.21
라우팅  (0) 2017.11.21
라라벨 설치  (0) 2017.11.21
개발 환경 준비-for MAC  (0) 2017.11.21