>  기사  >  PHP 프레임워크  >  Yii가 위젯에 데이터 작업을 배치하는 것이 합리적인가요?

Yii가 위젯에 데이터 작업을 배치하는 것이 합리적인가요?

(*-*)浩
(*-*)浩원래의
2019-12-14 10:10:431751검색

Yii가 위젯에 데이터 작업을 배치하는 것이 합리적인가요?

어떤 사람들은 여러 레이아웃을 만들고 다른 위치에서 레이아웃을 전환하기로 선택하지만 이는 코드의 재사용성을 극대화하지 못하고 충분히 유연하지 않습니다. Yii에는 이 문제를 해결하기 위한 매우 편리한 메커니즘이 있습니다. 바로 위젯인 위젯입니다. (권장 학습: yii 프레임워크 )

Yiii에는 Web.widgets 및 Zii.Widgets 아래에 내장된 위젯이 있습니다. 예를 들어 clinkPager 및 CMENU를 살펴볼 수 있습니다.

위젯을 직접 확장하려면 매뉴얼의 소개에 따라 CWidget을 상속하고 run() 메서드를 재정의해야 합니다. 첫 번째 위젯 확장을 시작해 보겠습니다.

위젯 저장 디렉터리 만들기: 위젯 클래스를 저장하기 위해 애플리케이션 아래에 위젯 디렉터리를 만들고(기본값은 보호됨) 위젯의 보기 파일을 저장하기 위해 widgets.views 디렉터리를 만듭니다.

위젯 클래스 만들기: application.widgets 아래에 TestWidget.php라는 파일을 만듭니다. 이름은 너무 특별하지 않으며 고유성을 보장합니다. 이름만 알면 됩니다. 내부에 다음 코드를 추가하세요.

class TestWidget extends CWidget
{
    public $datetime = ''; 

    public function run()
    {
        $datetime = empty($this->datetime) ? date('Y-m-d H:i:s') : $this->datetime;
        $this->render('test', array('datetime'=>$datetime));
    }
}

이 코드를 설명하세요. 규칙에 따라 TestWidget 클래스 이름은 TestWidget.php 파일 이름과 동일합니다. TestWidget 클래스는 CWidget을 상속한 다음 run() 메서드를 다시 작성해야 합니다. 호출되면 위젯이 렌더링됩니다.

run() 메서드에서 $this->render() 메서드를 호출하여 테스트 뷰를 렌더링하고 $datetime 변수를 뷰에 전달합니다(컨트롤러 뷰 렌더링 참조). 데이터베이스를 쿼리하고, 다양한 작업을 수행하고, 작업 결과를 뷰에 전달할 수 있습니다.

위 내용은 Yii가 위젯에 데이터 작업을 배치하는 것이 합리적인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.