
Blade는 Laravel의 템플릿 엔진입니다.
1. 기본 사용방법
기본위치
resources/views
파일 확장자
.blade.php
변수의 출력
<h2>{{ $name }}</h2>
Lagacy PHP
<?php echo $name; ?>
2. 왜 blade 는 별도의 문법을 가지고 있는가?
1) 가독성
PHP
<?php if ($user) { ?>
<?php foreach ($items as $item) { ?>
<?php } ?>
<?php } ?>
BLADE
@if($user)
@foreach($items as $item)
@endforeach
@endif
2) HTML 중심 개발 가능
- 마크업 중심
- 협업 쉬움
3) 추가기능
- 권한
- 데이터가 없을때
@auth
..
@endauth
@guest
..
@endguest
@isset($data)
..
@endisset
@forelse($items as $item)
..
@empty
....
@endforelse
* * * * Huda * * * *
3. 블래이드 문법
1) 조건문
@if($memner_kind == "T")
<p>선생님 입니다.</p>
@else
<p>선생님이 아닙니다.</p>
@endif
@if($memner_kind == "T")
<p>선생님 입니다.</p>
@elseif($memner_kind == "S")
<p>학생 입니다.</p>
@else
<p>Guest 입니다.</p>
@endif
2) 반복문
## for 기본 반복문
@for($i = 0; $i < 5; $i++)
<p>{{ $i }}</p>
@endfor
## while
@php $i = 0; @endphp
@while($i < 5)
<p>{{ $i }}</p>
@php $i++; @endphp
@endwhile
# for, while 은 변수를 잘못쓰면 무한루프 위험이 있습니다.
## 실무에서 더 많이 사용됨
@foreach($posts as $post)
<p>{{ $post->title }}</p>
@endforeach
## foreach 에서는 값이 있을때만 출력이 있기 때문에
## 사용자가 무슨 문제가 있는지 확인이 어렵다.
## 실제로는 아래 처럼 많이 사용한다.
@if(count($posts) > 0)
@foreach($posts as $post)
<p>{{ $post->title }}</p>
@endforeach
@else
<p>게시글이 없습니다</p>
@endif
## 실무에서 많이 쓰는 형태...
@forelse($posts as $post)
<p>{{ $post->title }}</p>
@empty
<p>게시글이 없습니다</p>
@endforelse
## 데이터 없으면 @empty 실행
3) 기타
# 값이 존재할때 ( 변수가 존재하고, null 이 아닐때 )
@isset($data)
<p>데이터가 있습니다</p>
@endisset
@isset($user)
<p>{{ $user->name }}</p>
@endisset
# Lagacy PHP
if (isset($user)) {
}
4) 레이아웃 구성 (layout, section)
@extends @section @yield
- 레이아웃 파일 views/layouts/app.blade.php
<!DOCTYPE html>
<html>
<head>
<title>My App</title>
</head>
<body>
<header>헤더</header>
@yield('content')
<footer>푸터</footer>
</body>
</html>
- 컨텐츠 파일 views/posts.blade.php
@extends('layouts.app')
@section('content')
<h1>Board</h1>
...
...
...
@endsection

- include 사용
* layout 에서 include 사용 ( header . footer ) 부분을 따로 분리해줄수 있다.
<!DOCTYPE html>
<html>
<head>
<title>My App</title>
</head>
<body>
@include('partials.header')
@yield('content')
@include('partials.footer')
</body>
</html>
* 자식 템플릿 @section 안과 밖에서도 사용 할 수 있습니다.
@extends('layouts.app')
@section('content')
<h1>Board</h1>
@include('board.skin')
.....
.....
.....
@endsection
@push @stack
<!DOCTYPE html>
<html>
<head>
<title>My App</title>
</head>
<body>
@include('partials.header')
@yield('content')
@include('partials.footer')
<script>
.....
</script>
@stack('javascript')
</body>
</html>
@extends('layouts.app')
@section('content')
<h1>Board</h1>
@push
<script>
.....
.....
.....
</script>
@endpush
@endsection

@extends → 부모 템플릿 상속
@section → 내용정의
@yield → 이부분에 내용이 교체
@push -> 내용정의
@stack -> 이부분에 내용이 누적
폴더 구조는 아래 처럼 구성하는 것을 추천합니다.
resources/views/
├── partials/
│ ├── header.blade.php
│ └── footer.blade.php
├── layouts/
│ └── app.blade.php
└── posts/
└── index.blade.php
예시 ) 템플릿을 이용해서 실제 만들어 보면서 설명하겠습니다.
https://www.templatemonster.com/monsterone/free-download/?id=248666%EF%BB%BF
MonsterONE Free Download
www.templatemonster.com
템플릿으로 빠르게 개발할때
1) html 파일들은 /resources/views/ 로 옮긴다.
2) 파일은 /resources/views/ 에서는 .blade.php 로 변경한다.
3) js, css 등은 경로를 접근할 수 있는 /public 에 옮긴다.
4) .blade.php 에서 js, css 의 경로를 확인한다.
5) 레이아웃을 분리한다. -> 공통적인 영역처리
실습과 과제
- 부트스트랩 템플릿을 blade 템플릿 구조로 만들어보기
'Hokma School :: Course 2 Laravel' 카테고리의 다른 글
| Laravel 07. Form / Validation + git clone laravel project (0) | 2026.04.28 |
|---|---|
| Laravel 06. Eloquent ORM (0) | 2026.04.24 |
| Laravel 03. Controller (0) | 2026.04.13 |
| Laravel 02. Routing (1) | 2026.04.10 |
| Laravel 01. 라라벨 소개와 설치 (0) | 2026.04.08 |