Notice
Recent Posts
Recent Comments
Link
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Tags
more
Archives
Today
Total
관리 메뉴

개발 기록

Laravel 이해하고 쓰자(블레이드 템플릿) 본문

웹 자료/Laravel

Laravel 이해하고 쓰자(블레이드 템플릿)

기록개발자 2020. 5. 20. 14:02

이 글은 뷰의 블레이드 템플릿 개념을 이해하고 사용하기 위해 작성됐습니다.

 

뷰는 resources/views에서 파일을 관리한다.

 

라라벨에서는 blade template을 사용하며

index.blade.php와 같이 blade확장자를 붙여 사용 가능합니다.

// index.blade.php
<html>
<head></head>
<body></body>
</html>

또한 ,

{{}} 안에 php변수 사용하면 출력이 가능하다.

// index.blade.php
<html>
<head></head>
<body>
 {{ $data="테스트" }}
 {{ $data }}
</body>
</html>

레이아웃(layouts)

@extends : 특정 파일의 레이아웃을 상속받는다. 

@section : 상속받은 파일의 @yield 부분에 입력될 내용을 지정한다.

ex)@yield('title')에 들어갈 내용은 @section('title') 안에 작성하고 @stop으로 닫아주면 된다.

@yield : 상속한다.

위와 같은 명령을 이용하여 레이아웃을 정의하거나 확장한다.

@extends('layouts.master') // layouts/master.blade.php 파일의 레이아웃을 상속받는다.
@section('title') // @yield('title')에는 '테스트페이지' 라는 값이 입력된다.
	테스트페이지 
@stop 

@section('header_css_js') // @yield('header_css_js')에 페이지에 사용될 js와 css를 임폴트 한다. 
<script src="//code.jquery.com/jquery-latest.min.js"></script> 
<link href="/css/base.css" rel="stylesheet" type="text/css" /> 
@stop 

@section('header') 
@include('layouts.header.header') // 헤더에는 layouts/header/header.blade.php의 내용을 가져온다.
@stop 

@section('container') 
	@include('assets.main_bn') // assets/main_bn.blade.php의 내용을 가져온다. 
    <div class="list_wrap"> 
    	<div class="product_listwrap"> 
        	<div class="grid"> 
            	@include('products.feed') // products/feed.blade.php의 내용을 가져온다. 
            </div> 
        </div> 
    </div> 
@stop 

@section('footer') 
	@include('assets.footer') // 푸터에는 assets/footer.blade.php의 내용을 가져온다. 
@stop 

@section('import_js') // 페이지에 사용되는 js를 임폴트 한다. 
	<script src="/js/common_menu.js"></script> 
@stop

헤더와 푸터처럼 모든페이지에 포함되는 영역이나 반복적으로 들어가는 부분은 별도의 블레이드 파일을 생성하여 @include 명령을 통해 가져올 수 있다. 이런 형태의 레이아웃 구성은 수정이 겁나 쉽다.

반복문

for

@for($i=1; $i<=10; $i++)
 {{ $i }}
@endfor

foreach

{{ $data = [1,2,3,4,5] }}
@foreach($data as $index => $value)
 {{ $index}}:{{ $value }}
@endforeach

switch

@switch($number)
    @case(1)
        일
        @break
    @case(2)
        이
        @break
    @default
      다른숫자
@endswitch

조건문

@if($data == 1)
 하나
@elseif($data == 2)
 둘
@else
 다른 숫자
@endif

CSRF(Cross-site Request Forgery) - 크로스사이트 요청 변조

form를 이용하여 post를 할 경우엔 CSRF를 붙여주시는것이 보안상 좋으며 별도의 설정없이 사용하면 에러가 발생합니다.

<form method="POST" action="/post">
    @csrf
</form>