Yii-위젯

위젯은 HTML, CSS 및 JS를 포함하는 재사용 가능한 클라이언트 측 코드입니다. 이 코드는 최소한의 로직을 포함하며yii\base\Widget목적. 이 개체를 모든보기에 쉽게 삽입하고 적용 할 수 있습니다.

Step 1 − 작동중인 위젯을 보려면 actionTestWidget 기능 SiteController 다음 코드로.

public function actionTestWidget() { 
   return $this->render('testwidget'); 
}

위의 예에서 우리는 방금 View 호출 “testwidget”.

Step 2 − 이제 views / site 폴더 안에 다음과 같은 View 파일을 생성합니다. testwidget.php.

<?php 
   use yii\bootstrap\Progress; 
?> 
<?= Progress::widget(['percent' => 60, 'label' => 'Progress 60%']) ?>

Step 3 − 당신이 가면 http://localhost:8080/index.php?r=site/test-widget, 진행률 표시 줄 위젯이 표시됩니다.

위젯 사용

위젯을 사용하려면 View, 당신은 yii\base\Widget::widget()함수. 이 함수는 위젯 초기화를위한 구성 배열을 사용합니다. 이전 예에서는 구성 개체의 백분율 및 레이블이 지정된 매개 변수가있는 진행률 표시 줄을 삽입했습니다.

일부 위젯은 콘텐츠 블록을 사용합니다. 다음으로 묶어야합니다.yii\base\Widget::begin()yii\base\Widget::end()기능. 예를 들어, 다음 위젯은 연락처 양식을 표시합니다-

<?php $form = ActiveForm::begin(['id' => 'contact-form']); ?> 
   <?= $form->field($model, 'name') ?> 
   <?= $form->field($model, 'email') ?> 
   <?= $form->field($model, 'subject') ?> 
   <?= $form->field($model, 'body')->textArea(['rows' => 6]) ?> 
   <?= $form->field($model, 'verifyCode')->widget(Captcha::className(), [ 
      'template' =>
         '<div class="row">
            <div class = "col-lg-3">{image}</div>
            <div class = "col-lg-6">{input}</div>
         </div>', 
   ]) ?> 
   <div class = "form-group"> 
      <?= Html::submitButton('Submit', ['class' => 'btn btn-primary',
         'name' => 'contact-button']) ?> 
   </div> 
<?php ActiveForm::end(); ?>

위젯 생성

위젯을 만들려면 다음에서 확장해야합니다. yii\base\Widget. 그런 다음yii\base\Widget::init()yii\base\Widget::run()기능. 그만큼run()함수는 렌더링 결과를 반환해야합니다. 그만큼init() 함수는 위젯 속성을 정규화해야합니다.

Step 1− 프로젝트 루트에 컴포넌트 폴더를 생성합니다. 해당 폴더 안에FirstWidget.php 다음 코드로.

<?php 
   namespace app\components; 
   use yii\base\Widget; 
   class FirstWidget extends Widget { 
      public $mes; public function init() { parent::init(); if ($this->mes === null) { 
            $this->mes = 'First Widget'; } } public function run() { return "<h1>$this->mes</h1>"; 
      } 
   } 
?>

Step 2Modify 그만큼 testwidget 다음과 같은 방식으로 볼 수 있습니다.

<?php 
   use app\components\FirstWidget; 
?> 
<?= FirstWidget∷widget() ?>

Step 3 − 이동 http://localhost:8080/index.php?r=site/test-widget. 다음이 표시됩니다.

Step 4 − 콘텐츠를 begin()end() 호출을 수정해야합니다. FirstWidget.php 파일.

<?php
   namespace app\components;
   use yii\base\Widget;
   class FirstWidget extends Widget {
      public function init() {
         parent::init();
         ob_start();
      }
      public function run() {
         $content = ob_get_clean(); return "<h1>$content</h1>";
      }
   }
?>

Step 5− 이제 h1 태그가 모든 콘텐츠를 둘러 쌉니다. 우리는ob_start()출력을 버퍼링하는 함수. 다음 코드에 지정된대로 testwidget보기를 수정하십시오.

<?php
   use app\components\FirstWidget;
?>
<?php FirstWidget::begin(); ?>
   First Widget in H1
<?php FirstWidget::end(); ?>

다음 출력이 표시됩니다.

중요 사항

위젯은-

  • MVC 패턴에 따라 생성됩니다. 뷰의 프레젠테이션 레이어와 위젯 클래스의 로직을 유지해야합니다.

  • 독립적으로 설계되어야합니다. 최종 개발자는 뷰로 디자인 할 수 있어야합니다.