출처 : http://www.yiiframework.com/doc/guide/1.1/en/basics.view
View
- Layout
- Widget
- System View
뷰는 주로 사용자 인터페이스 요소로 구성된 PHP스크립트 입니다.
PHP 메서드를 를 포함 할 수 있지만 되도록이면 유지하는 것이 좋습니다. 덩치가 큰 로직과 같은 경우에는 뷰가 아니라 컨트롤러나 모델에 배치되어야 합니다.
뷰는 뷰스크립트 파일을 식별하는데 사용되는 이름이 있습니다. 뷰의 이름은 뷰스크립트 파일의 이름과 동일해야 합니다. 예를 들어 edit refers 의 이름은 edit.php 입니다. 뷰를 랜더링 하려면 뷰의 이름으로 CController::render() 를 호출해야 합니다.
이 메서드는 아래 디렉토리에서 해당하는 뷰 파일을 찾습니다. protected/views/ControllerID.
스크립트 내부에서는 $this. 를 사용해 컨트롤러 인스턴스에 액세스 할 수 있습니다. 속성을 사용하는 방법은 $this->propertyName 의 형식을 사용 합니다.
뷰에 데이터를 전달하려면 다음과 같은 방법을 사용합니다.
$this->render('edit', array( 'var1'=>$value1, 'var2'=>$value2, ));
render() 메서드는 두 번째 배열의 매개변수 값을 나타 냅니다. 그결과로 뷰 스크립트에서 var1 그리고 var2를 액세스 할 수 있습니다.
1. Layout
레이아웃은 뷰를 꾸미는데 사용되는 특수 뷰 입니다. 일반적으로 여러 뷰 사이에 공통 사용자 인터페이스의 일부를 포함하고 있습니다.
예를 들면 레이아웃웃은 머릿글과 바닥글을 포함할 수 있으며 아래처럼 사이에서 보여집니다.
......header here...... <?php echo $content; ?> ......footer here......
$content 에서 뷰의 랜더링 결과를 저장합니다.
render() 를 호출할대 레이아웃이 적용 됩니다. 뷰 스크립트는 protected/views/layouts/main.php 에서 레이아웃으로 사용됩니다. CWebApplication::layout 이나 CController::layout.을 사용자 정의해 사용할 수 있습니다. 어떠한 레이아웃도 적용하지 않고 뷰를 랜덜이하면 renderPartial() 가 호출됩니다.
2. Widget
위젯은 CWidget 또는 CWidget의 하위 클래스의 인스턴스 입니다.
위젯은 주로 표현 목적으로 구성된 요소 입니다. 위젯은 일반적으로 복잡한 사용자 인터페이스에?? 내장됩니다. 예를들어 달력 위젯은 복잡한 달력 사용자 인터페이스를 랜더링 할 수 있습니다. 위젯은 사용자 인터페이스에서 더나은 성능을 표현해 줍니다.
위젯을 사용하려면 다음과 같이 뷰스크립트에 작성하세요
<?php $this->beginWidget('path.to.WidgetClass'); ?> ...body content that may be captured by the widget... <?php $this->endWidget(); ?>
또는
<?php $this->widget('path.to.WidgetClass'); ?>
위젯 컨텐츠가 필요하지 않을때 두번째 가 사용됩니다.
위젯은 사용자 정의로 동작을 구성할 수 있습니다. CBaseController::beginWidget 또는 CBaseController::widget.을 호출할 때 초기 속성 값을 설정하면 됩니다. 예를들어 CMaskedTextField widget,을 사용할 때 mask를 지정할 수 있습니다. 다음과같이 초기 배열 값을 지정해 사용 할 수 있습니다.
<?php $this->widget('CMaskedTextField',array( 'mask'=>'99/99/9999' )); ?>
새 위젯을 정의하려면 CWidget 을 extend 하고 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() } }
컨트롤러와 마찬가지로 위젯은 자체 보기를 할 수 있습니다. 기본적으로 위젯 뷰 파일은 위젝 클래스 파일을 포함하는 데렉토리의 하위 디렉토에 에 있습니다. CWidget::render(), 를 호출해 볼수 있습니다. 컨트롤러와 유사하지만 레이아웃 위젯 뷰에 적용되지 않습니다. 또한 $this 는 위젯 인스턴스를 나타냅니다.
3. System View
시스템 뷰는 오류 및 로깅 정보를 표시하는데 사용 됩니다. 예를들어 존재하지 않는 컨트롤러나 동작이 요청될때 에러를 throw 합니다. 특정 시스템 뷰를 사용해 예외처리 합니다.
시스템뷰의 이름은 몇가지 규칙을 따릅니다. error code XXX 와 같은 오류코드는 CHttpException 에서 참조하세요. 에를들어 404에러는 CHttpException 에서 보여집니다.
기본 시스템뷰 framework/views.
사용자정의 뷰 protected/views/system.