Yiiウィジェットの作成

2320 ワード

Yiiでは、yibaseWidgetクラスを継承し、yibaseWidget::init()および/またはyibaseWidget::run()メソッドを上書きして、ウィジェットの作成を実現できます.
一般的にinitメソッドはウィジェットのプロパティを処理するために使用され、runメソッドはウィジェットがレンダリング結果を生成するコードを処理するために使用され、runのレンダリング結果は直接出力したり文字列として返したり、ウィジェットの内容をビューファイルに保存したりすることができます.
一:widgetメソッドの使用
1:ウィジェットの作成
message == null) {
            $this->message = 'hello world!';
        }
    }
    public function run()
    {
        $messge = Html::encode($this->message);
        $html = <<
            {$messge}
            
HTML;
$js =<registerJs($js);//
$css = <registerCss($css);
AppAsset::register($this->view);//リソースパッケージの登録
return $html;
}
}
以上のようにウィジェットを作成しました
ウィジェットにレンダリングが必要なコンテンツが多い場合があります.yibaseWidget::render()メソッドを使用してビューファイルをレンダリングできます.
public function run()
{
    return $this->render('index', [
        'message' => $this->message
    ]);
}

2:ビュー内のファイルにウィジェットを取り込む
= \frontend\widget\TestWidget::widget(['message' => 'nihao']) ?>

二:begin()とend()メソッドの使用
1:ウィジェットの作成
url == null) {
            $this->url = 'http://www.baidu.com';
        }
        ob_start();//      
    }
    public function run()
    {
        $html = Html::beginTag('a', ['href' => $this->url]);
        $content = ob_get_clean();//        
        $html .= $content;
        $html .= Html::endTag('a');
        return $html;
    }
}

2:ウィジェット使用
 'http://www.wj0511.com']); ?>