CI4

[코드이그나이터] [첫번째 어플리케이션 제작(튜터리얼)] 정적 페이지

으누아빠 2020. 8. 28. 19:45
반응형

CI4 > Tutorial > 정적 페이지(Static pages)

출처:
http://ci4doc.cikorea.net/tutorial/static_pages.html

  1. app/Views 디렉토리에 pages 디렉토리를 생성한 후 about.php 및 home.php 생성
  2. app/Views 디렉토리에 templates 디렉토리를 생성한 후 header.php 및 footer.php 생성
  3. app/Controllers 디렉토리에 Pages.php 파일 생성
Pages.php

<?php
// 네임스 페이스는 디렉토리 구조를 따라가야 한다.
namespace App\Controllers;

// CodeIgniter\Controller 클래스에 정의된 메소드와 변수를 이용할 수 있다는 것을 의미
use CodeIgniter\Controller;

//Pages 클래스는 CodeIgniter\Controller클래스를 확장
class Pages extends Controller
{

    public function index()
    {
        //view() RendererInterface 호환 클래스에게 지정된 뷰를 렌더링하도록 지시
        return view('welcome_message');
    }

    public function view($page = 'home')
    {
        if (!is_file(APPPATH . '/Views/pages/' . $page . '.php')) {
            //만약 app/Views/pages 디렉토리내에 관련 파일이 없다면 에러 발생
            throw new \CodeIgniter\Exceptions\PageNotFoundException($page);
        }


        $data['title'] = ucfirst($page);

        echo view('templates/header', $data);
        echo view('pages/' . $page, $data);
        echo view('templates/footer', $data);
    }
}

전역함수 view()

형식: view($name[, $data[, $options]])

Parameters:

  • $name (string) – 로드할 파일 이름
  • $data (array) – 뷰 내에서 사용할 수있는 키/값 쌍의 배열
  • $options (array) – 렌더링 클래스로 전달 될 옵션 배열

Returns: 뷰의 출력

Return type: string

header.php

<!doctype html>
<html>
<head>
    <title>CodeIgniter Tutorial</title>
</head>
<body>

    <h1><?= esc($title); ?></h1>
footer.php

    <em>&copy; 2019</em>
</body>
</html>
app/Config/Routes.php

<?php

/**
 * --------------------------------------------------------------------
 * Route Definitions
 * --------------------------------------------------------------------
 */

// We get a performance increase by specifying the default
// route since we don't have to scan directories.
$routes->get('/', 'Home::index');

//어떠한 문자가 와도 Pages 클래스의 view 메소드를 매핑하고 문자열을 메소드 변수로 전달
$routes->get('(:any)', 'Pages::view/$1');

결과