본문 바로가기
소프트웨어 개발/PHP

[코드이그나이터4] 뷰 페이지 view 레이아웃 잡기

by 인생은즐겁게 2022. 2. 12.
반응형

1. 뷰 페이지 레이아웃 파일 만들기

 

app\Views 폴더에 master.php라는 파일을 만듭니다. 이 파일을 가지고 레이아웃을 만들겠습니다.

 

app\Views\master.php

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8"/>
    <title>
        <?php echo $this->renderSection("pageTitle"); ?>
    </title>
</head>

<body>
    <?php echo $this->renderSection("content"); ?>
</body>

</html>

 

$this->renderSection()은 뷰에서 콘텐츠를 동적으로 만들 수 있는 메서드입니다. pageTitle, content는 섹션의 이름입니다. 이러한 섹션들은 View파일 내부에 정의되어야 합니다. $this->renderSection() 메서드는 제한 없이 호출이 가능합니다.

 

2. 뷰 파일에서 레이아웃 사용

 

해당 경로로 뷰 파일을 생성합니다. 

app\Views\list.php

<?php $this->extend("master"); ?>

<?php echo $this->section("pageTitle"); ?>
  게시판 목록
<?php echo $this->endSection(); ?>

<?php echo $this->section("content"); ?>

<table border='1' style="width:800px">
    <thead>
        <tr>
            <td>제목</td>
            <td>글쓴이</td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>안녕하세요</td>
            <td>김철수</td>
        </tr>
        <tr>
            <td>안녕하세요~방가</td>
            <td>박영희</td>
        </tr>
        <tr>
            <td>방가!!</td>
            <td>이영호</td>
        </tr>
    </tbody>
</table>

<?php echo $this->endSection(); ?>

$this->extend()메소드는 레이아웃을 호출하는 메소드입니다. 해당 코드에서는 master라는 레이아웃 파일을 호출하고 있습니다. app\Views\master.php에 정의한 pateTitle 섹션, content 섹션 등을 $this->section() ..... $this->endSection() 열고 닫는 형태로 호출하고 있습니다. 

 

 

3. 컨트롤러를 생성하여 뷰 파일 확인

 

app\Controllers\Board.php 컨트롤러 파일을 생성합니다. 앞서 만든 list 뷰 파일을 view() 메소드를 통해서 호출합니다.

<?php

namespace App\Controllers;

use App\Controllers\BaseController;

class Board extends BaseController
{
    public function index()
    {
        //
        echo view("board/list");
    }
}

 

결과 화면은 생성한 컨트롤러 경로를 통해서 확인합니다.

 

반응형

댓글