Yii framework

본 토픽은 현재 준비중입니다. 공동공부에 참여하시면 완성 되었을 때 알려드립니다.

View

출처 : http://www.yiiframework.com/doc/guide/1.1/en/basics.view

View

  1. Layout
  2. Widget
  3. 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 는 위젯 인스턴스를 나타냅니다.

:: 팁 CWidgetFactory::widgets 에서 사이트 전체 위젯을 구성할 수 있습니다. theming page에서 정보를 찾을 수 있습니다.

 3. System View

 시스템 뷰는 오류 및 로깅 정보를 표시하는데 사용 됩니다. 예를들어 존재하지 않는 컨트롤러나 동작이 요청될때 에러를 throw 합니다. 특정 시스템 뷰를 사용해 예외처리 합니다.

시스템뷰의 이름은 몇가지 규칙을 따릅니다. error code XXX 와 같은 오류코드는 CHttpException 에서 참조하세요. 에를들어 404에러는 CHttpException 에서 보여집니다.

기본 시스템뷰 framework/views. 

사용자정의 뷰 protected/views/system.

댓글

댓글 본문
작성자
비밀번호
버전 관리
투리얼
현재 버전
선택 버전
graphittie 자세히 보기