# 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 getFlashdata('success')): ?>
= esc($error) ?>
``` ## 5. 레이아웃 (선택) - 공통 헤더·푸터가 있으면 레이아웃 뷰를 두고, 각 뷰는 본문만 포함. (현재 Auth·bag은 풀 페이지 HTML.) - 링크: `base_url()`, `base_url('logout')` 등으로 통일. ## 6. HTML 기본 - `lang="ko"`, `charset="utf-8"`, viewport 메타. - 제목: `