Files
jongryangje/docs/개발 규칙/05-View정리구조.md
2026-04-08 00:23:55 +09:00

2.5 KiB

View 정리 구조 (View Organization)

Auth·Home·bag 뷰 기준. 디렉터리·파일명·공통 요소 규칙.

1. 디렉터리 구조

  • 컨트롤러와 1:1 대응하는 폴더. 컨트롤러명 소문자 = 뷰 폴더명.
  • 한글/공백 없음. 소문자·언더스코어 사용.
app/Views/
├── auth/           # Auth 컨트롤러
│   ├── login.php
│   └── register.php
├── home/           # Home 컨트롤러
│   └── dashboard.php
├── bag/            # 업무 화면(뷰만 있을 수 있음)
│   └── daily_inventory.php
├── admin/          # 관리자단(선택)
│   ├── user/
│   │   ├── index.php
│   │   ├── create.php
│   │   └── edit.php
│   └── ...
└── errors/         # CI4 기본 에러 뷰

2. 파일명 규칙

  • 소문자, 단어 구분은 언더스코어 가능. 예: login.php, register.php, daily_inventory.php.
  • 목록: index.php. : create.php(등록), edit.php(수정). 기능별: login.php, login_history.php 등.

3. 뷰 호출 (컨트롤러)

  • return view('auth/login'); — 확장자 없음, 경로는 Views/ 기준 상대 경로.
  • 서브폴더: view('admin/user/create').

4. 공통 요소 (필수·권장)

  • 출력 이스케이프: <?= esc($변수) ?>, <?= esc(session()->getFlashdata('success')) ?>.
  • : action="<?= base_url('login') ?>", method="POST", <?= csrf_field() ?>.
  • 입력값 복원: value="<?= esc(old('login_id')) ?>".
  • 플래시 메시지: success, error, errors 표시.
<?php if (session()->getFlashdata('success')): ?>
<div class="..."><?= esc(session()->getFlashdata('success')) ?></div>
<?php endif; ?>
<?php if (session()->getFlashdata('error')): ?> ... <?php endif; ?>
<?php if (session()->getFlashdata('errors')): ?>
  <?php foreach (session()->getFlashdata('errors') as $error): ?>
    <p><?= esc($error) ?></p>
  <?php endforeach; ?>
<?php endif; ?>

5. 레이아웃 (선택)

  • 공통 헤더·푸터가 있으면 레이아웃 뷰를 두고, 각 뷰는 본문만 포함. (현재 Auth·bag은 풀 페이지 HTML.)
  • 링크: base_url(), base_url('logout') 등으로 통일.

6. HTML 기본

  • lang="ko", charset="utf-8", viewport 메타.
  • 제목: <title>화면명 - 쓰레기봉투 물류시스템</title> 형태 권장.

새 뷰 추가 시 auth/login.php, auth/register.php, bag/daily_inventory.php 구조를 참고해 같은 규칙으로 만든다.