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 2 − Modify 그만큼 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 패턴에 따라 생성됩니다. 뷰의 프레젠테이션 레이어와 위젯 클래스의 로직을 유지해야합니다.
독립적으로 설계되어야합니다. 최종 개발자는 뷰로 디자인 할 수 있어야합니다.