laravel.kr/docs/8.x/blade#%ED%95%98%EC%9C%84%20%EB%B7%B0%20%ED%8F%AC%ED%95%A8%ED%95%98%EA%B8%B0
라라벨은 @include 파일을 통해 뷰 파일 안에, 다른 뷰 파일을 포함할 수 있습니다.
저번 글에 이어서 mbti 게시판을 예를 들어 설명하겠습니다.
mbti 종류는 총 16개가 있고
각 성격 유형별 폴더가 있으면 각각 index, create, show, edit 총 4개의 뷰가 존재해야합니다.
@include를 이용하면 index, create, show, edit에서 중복되는 부분을 따로 뷰 파일로 만들어서
불러오기 때문에 수정에 용이합니다.
현재 view 폴더 안에 mbtis가 있고, 중복되는 부분들은 recycles 폴더를 만들어 따로 view 파일을 만들었습니다.
<div class="w-11/12 pt-12 mx-auto">
<div class="text-right pt-8">
<a href="{{route('mbtis.'.$mbtiName.'.create')}}">
<i class="xi-pen pr-1"></i><button class="">글쓰기</button>
</a>
</div>
<div class="mt-16 min-h-30">
<table class="w-full table-fixed">
<tr>
<td class="w-7/12"></td>
<td class="w-1/12"></td>
<td class="w-1/12"></td>
</tr>
@foreach($mbtis as $mbti)
<tr class="border-b">
<td class="text-lg pl-2 truncate"><a href="{{route('mbtis.'.$mbtiName.'.show', $mbti->id)}}">{{$mbti->title}}</a>
</td>
<td class="text-center">{{$mbti->user_name}}</td>
<td class="">{{$mbti->created_at->format('Y-m-d')}}</td>
</tr>
@endforeach
</table>
</div>
<div class="mt-16">
{{$mbtis->links()}}
</div>
</div>
위 코드는 index.blade.php 부분에서 중복되는 부분을 mbti-index.blade.php로 빼둔 부분입니다.
index.blade.php에서는 아래 처럼 @include를 사용하면 됩니다.
@extends('layouts.app')
@section('container')
@include('recycles.mbti-index', ['mbtiName'=>$mbtiName, 'mbtis'=>$mbtis])
@stop
첫 번째 파라미터로 다른 view 파일을 불러오고, 두 번째 파라미터로 템플릿에서 활용할 데이터를 보내줄 수 있습니다.
'IT > PHP' 카테고리의 다른 글
Laravel - faker 한글 (0) | 2021.05.03 |
---|---|
Laravel - 일대다 관계 (0) | 2021.04.23 |
Laravel - 컨트롤러 줄이기 (2) | 2021.04.14 |
Laravel - 이미지 리사이즈 (1) | 2021.03.09 |
Laravel - Scout(검색) (0) | 2021.03.07 |
댓글