2.5 KiB
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 구조를 참고해 같은 규칙으로 만든다.