Erzsamatory Weblog


※ 외국 문서 번역 자료입니다.

원문: Fundamentals - View (http://goo.gl/Fy3g9c)

는 사용자 인터페이스 요소가 포함된 PHP 스크립트입니다. 뷰는 기본적으로 PHP 명령문을 사용할 수 있지만, 데이터 모델을 변경하는 등의 작업은 절대 해서는 안 됩니다. 로직과 출력을 분리하는 기본 이론에 따르면, 어플리케이션 작동에 필요한 중요한 명령어들은 모두 컨트롤러나 모델에 위치해야 합니다.

뷰는 렌더링될 때 사용되는 고유의 이름을 가집니다. 뷰 이름은 뷰 스크립트의 이름과 같습니다. 예를 들어, 뷰 이름이 edit라면 뷰 스크립트의 이름은 edit.php가 됩니다. 뷰를 렌더링하기 위해서는 CController::render() 명령어에 뷰 이름을 넣으면 됩니다. 이 메소드는 넘겨 받은 뷰 이름에 해당하는 뷰 스크립트 파일을 검색하여 불러옵니다. 이 때 뷰 스크립트의 위치는 protected/views/ControllerID 입니다.

뷰 스크립트 내에서, 개발자는 $this 를 사용하여 컨트롤러 인스턴스에 접근할 수 있습니다. 따라서 개발자는 $this->propertyName 와 같은 방법으로 컨트롤러의 모든 요소를 가져올 수 있습니다.

더 나아가 개발자는 다음과 같은 방법으로 뷰에 접근 가능한 요소를 추가할 수도 있습니다.

$this->render('edit', array(
    'var1'=>$value1,
    'var2'=>$value2,
));


위 소스코드를 사용함으로써, render() 메소드는 두 번째의 배열을 변수에 저장하고, 개발자는 뷰 스크립트에서 $var1$var2 의 지역변수에 액세스할 수 있습니다.


사용자 삽입 이미지


1. 레이아웃


레이아웃은 뷰를 꾸미는데 사용되는 뷰의 특별한 요소입니다. 레이아웃은 기본적으로 사용되는 사용자 인터페이스의 각 부분을 포함합니다. 예를 들어, 레이아웃은 헤더와 푸터를 기본적으로 포함하고, 뷰에서 처리된 데이터를 이 둘 사이에 삽입합니다. 다음은 하나의 예시입니다.

......header here......
<?php echo $content; ?>
......footer here......


$contents 는 렌더링된 뷰의 결과물을 저장하고 있는 변수입니다.

레이아웃은 render() 메소드가 실행됨에 의해서 사용자 인터페이스에 실제로 적용됩니다. 기본적으로, protected/views/layouts/main.php 뷰 스크립트는 레이아웃으로 사용됩니다. 이것은 CWebApplication::layout 또는 CController::layout 을 수정함으로써 커스터마이징할 수 있습니다. 어떠한 레이아웃도 사용하지 않으며 렌더링하기 위해서는 renderPartial() 메소드를 사용하면 됩니다.

2. 위젯


위젯CWidget 또는 CWidget의 자식 클래스의 인스턴스입니다. 위젯은 사용자 인터페이스에 주로 사용되는 구성요소 중 하나입니다. 위젯은 복잡하게 구성되는 단일 사용자 인터페이스를 만들기 위해서 사용되는 것으로, 뷰 스크립트에 추가되어 실행됩니다. 예를 들어, 달력 위젯은 복잡한 달력 인터페이스를 렌더링하는데 사용될 수 있습니다. 위젯은 사용자 인터페이스를 개발하는데 있어서 Yii Framework의 수준 높은 소스코드의 재사용성을 보여주는 대표적인 구성요소입니다.

위젯을 사용하기 위해서는 뷰 스크립트에서 다음과 같은 소스코드를 사용합니다.

<?php $this->beginWidget('path.to.WidgetClass'); ?>
...body content that may be captured by the widget...
<?php $this->endWidget(); ?>

또는

<?php $this->widget('path.to.WidgetClass'); ?>


후자의 방법은 해당 위젯이 BODY의 어떠한 부분도 필요로 하지 않는 경우에만 사용할 수 있습니다.

위젯의 개별적인 작동을 제어하기 위해서 개발자는 각각의 위젯을 설정할 수 있습니다. 개발자는 CBaseController::beginWidget 또는 CBaseController::widget 를 사용할 때, 다음의 방법을 통하여 위젯에 초기 설정 값을 전달할 수 있습니다. 아래의 예시는 CMaskedTextField 위젯을 사용하는 예제입니다.

<?php
$this->widget('CMaskedTextField',array (
    'mask'=>'99/99/9999'
));
?>


새로운 위젯을 정의하기 위해서는 CWidget 의 자식 클래스를 생성한 후, init()run() 메소드를 오버라이딩합니다.

class MyWidget extends CWidget
{
    public function init()
    {
        // this method is called by CController::beginWidget()
    }
    
    public function run()
    {
        // this method is called by CController::endWidget()
    }
}


위젯도 컨트롤러와 같이 독자적인 뷰를 가질 수 있습니다. 기본적으로 위젯에서 사용하는 뷰 스크립트 파일은 views 라는 위젯 디렉터리의 서브디렉터리에 저장됩니다. 여기에 저장된 뷰 스크립트는 CWidget::render() 메소드가 실행됨으로써 렌더링됩니다. 위젯 뷰는 컨트롤러의 그것과 대부분 비슷하지만, 단 한가지 차이점은 레이아웃이 위젯 뷰에 적용되지 않는다는 점입니다. 또한 뷰 스크립트에서의 $this 는 컨트롤러 인스턴스가 아닌 위젯 인스턴스를 참조하게 됩니다.


3. 시스템 뷰


시스템 뷰는 Yii Framework에서 오류 또는 로깅 정보를 개발자에게 제공할 때 사용되는 뷰 스크립트입니다. 예를 들어, 개발자가 존재하지 않는 컨트롤러나 액션을 요청하는 경우, Yii Framework는 오류를 설명하는 예외 스크립트를 가져옵니다. Yii Framework는 특정한 시스템 뷰 스크립트를 통하여 해당 오류의 내용을 컴퓨터 화면에 출력합니다.

시스템 뷰의 이름을 지을 때에는 몇몇의 규칙을 따라야 합니다. errorXXX와 같이 지어진 것 뷰 스크립트는 오류 코드 XXX에 해당하는 CHttpException을 출력하는데 사용됩니다. 예를 들어, 오류 코드 404에 해당하는 CHttpException이 발생하는 경우 error404 뷰 스크립트가 실행됩니다.

Yii Framework는 기본 시스템 뷰를 제공합니다. 이것들은 framework/views 에 저장되어 있습니다. 시스템 뷰는 protected/views/system 에 새로운 뷰 스크립트를 추가함으로써 커스터마이징할 수 있습니다.


목차
1. 시작하기
     1-1. Yii란 무엇인가?
     1-2. 설치
     1-3. 아파치 웹서버와 Nginx 설정
     1-4. 첫 Yii 어플리케이션 생성

2. 기본 개념
     2-1. 모델-뷰-컨트롤러 (MVC)
     2-2. 엔트리 스크립트
     2-3. 어플리케이션
     2-4. 컨트롤러
     2-5. 모델
     2-6.  (현재 페이지)
     2-7. 컴포넌트
     2-8. 모듈
     2-9. 경로 별칭과 네임스페이스
     2-10. 일반 규칙
     2-11. 개발 흐름 (Workflow)
     2-12. MVC 예제

3. 양식(Form) 사용 연습
     3-1. 개요
     3-2. 모델 생성
     3-3. 액션 생성
     3-4. 양식 생성
     3-5. 테이블 추출
     3-6. 양식 생성기 사용하기

4. 데이터베이스 사용 연습
     4-1. 개요
     4-2. DB 액세스 객체
     4-3. 쿼리 빌더
     4-4. 동적 레코드
     4-5. Relational Active Record
     4-6. 데이터베이스 변환

5. 캐싱
     5-1. 개요
     5-2. 데이터 캐시
     5-3. 부분 캐시
     5-4. 페이지 캐시
     5-5. 동적 컨텐츠

6. Yii 확장
     6-1. 개요
     6-2. 확장 사용하기
     6-3. 확장 생성하기
     6-4. 써드파티 라이브러리 사용하기

7. 테스트
     7-1. 개요
     7-2. Defining Fixtures
     7-3. Unit Testing
     7-4. Functional Testing

원문: http://www.yiiframework.com/doc/guide/
http://www.erzsamatory.net/trackback/37

건전한 댓글 문화를 만들어주시기 바랍니다 ^^
불건전한 댓글이 등록되는 경우 관리자의 임의적 판단으로 삭제될 수 있음을 미리 공지드립니다.

비밀글로 작성하기