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

68 lines
2.5 KiB
Markdown

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