blade에서 config를 사용한 호출 방법(2중 foreach 이용 예)

처음에



여러분 안녕하세요!
이번에는 Laravel의 템플릿 엔진인 blade에 config 파일 내에 있는 상수를 호출하는 방법을 소개하겠습니다.
구구라고 해도 나오지 않았던 내용이었기 때문에, 비망록도 겸해 게재하겠습니다.

꼭 참고해 보세요.

블레이드란?



공식에서 발췌.

Blade는 간단하면서도 강력한 Laravel 템플릿 엔진입니다. 다른 인기있는 PHP 템플릿 엔진과 달리 뷰에 직접 PHP를 작성할 수 있습니다. 모든 블레이드 뷰는 PHP로 컴파일되고 변경이있을 때까지 캐시됩니다. 즉 애플리케이션의 오버헤드는 기본적으로 0입니다. Blade 뷰에는 .blade.php 파일 확장자를 붙여 보통 resources/views 디렉토리 안에 설치합니다.

Laravel을 구현할 때 view 부분은 html이 아닌 blade라는 Laravel 특정 템플릿 엔진을 사용합니다.
쓰는 방법 자체는 html이지만 html 구문 외에도 Blade 관련 기능을 사용할 수 있습니다.


【조건 분기】
@if(조건식) ~ @endif
【루프 처리】
@foreach(조건식) ~ @endforeach

이번은, blade상에서, 2중으로 foreach를 이용해, config 파일로부터 정수를 출력하는 방법의 소개가 됩니다.
그럼 가자.

설명 방법



우선은 config 파일의 정수의 소개가 됩니다.
예를 들어, fruits 정보가 들어 있는 foods.php 라는 파일을 만듭니다.
여기는 배열로 유지하고 categorykinds 로 각각 정수를 가지고 있습니다.

이번에는 이 파일의 정보를 이중으로 foreach를 이용하여 출력해 보겠습니다.

config/const/foods.php
<?php
  return[
    'FOODS' => [
        'FRUITS' => [
            'category' => 'グレープ',
            'kinds' => [
            'シャインマスカット',
            '巨峰',
            'ピオーネ',
            'デラウエア',
            'その他'
            ]
        ]
     ]
  ];

이쪽이 출력하기 위한 코드가 됩니다.

resources/views/foods.blade.php
@foreach(config('const.foods.FOODS') as $fruit)
<div class="title">{{ Arr::get($fruit, 'category') }}</div>
    @foreach(Arr::get($fruit, 'kinds') as $kind)
    <li>
        <input type="checkbox" id="test-{{$loop->index}}">
        <label for="test-{{$loop->index}}">{{ $kind }}</label>
    </li>
    @endforeach
@endforeach

출력 결과


해설



첫 foreach



첫 번째 블레이드 안에 있는 foreach 에서 config/const/foods.php 안에 있는 FOODS 를 호출하고 있습니다.
출력 방법으로는 {{$fruit}} 로 쓰고 싶습니다만, 에러가 발생합니다.
예상되는 오류 코드는 다음과 같습니다.
TypeError
htmlspecialchars(): Argument #1 ($string) must be of type string, array given

요점은 형이 String로 밖에 출력할 수 없는데, 배열 데이터로 와 있어? 다르지 않아?
라고 합니다.

상기의 에러와 같이 String형으로 출력할 필요가 있으므로,{{ Arr::get($fruit, 'category') }}로 해서, $fruit 안에 있는 category 를 지정해 줍니다.
그 결과 "포도"가 출력됩니다.

두 번째 foreach



첫 번째 foreach에서 foreach를 추가로 작성합니다.
그래서 앞서도 이용한 Arr::get를 다시 이용하고 있습니다.foreach(Arr::get($fruit, 'kinds') as $kind)여기의 구문으로 $fruit 안에 있는 kinds 를 지정해 줍니다.

그리고는, {{$kind}} 라고 출력하면, 상기의 출력 결과의 나와입니다.

마지막으로



어땠습니까?
나는 출력이 확실히 되기까지 몇 시간이 걸렸습니다. 웃음

그 밖에도 망설이고 있는 분이 있는 것은 아닐까 생각 기술했습니다.
조금이라도 도움이되면 다행입니다.

고마워요.

좋은 웹페이지 즐겨찾기