ホームページ  >  記事  >  PHPフレームワーク  >  Yii がデータ操作をウィジェットに配置するのは合理的ですか?

Yii がデータ操作をウィジェットに配置するのは合理的ですか?

(*-*)浩
(*-*)浩オリジナル
2019-12-14 10:10:431751ブラウズ

Yii がデータ操作をウィジェットに配置するのは合理的ですか?

複数のレイアウトを作成し、別の場所でレイアウトを切り替えることを選択する人もいますが、これではコードの再利用性が最大化されず、柔軟性が十分ではありません。 Yii には、この問題を解決するための非常に便利なメカニズムがあります。それは、ウィジェットです。 (推奨学習: yii フレームワーク)

yii には、一般的に使用される CLinkPager など、web.widgets および zii.widgets の下に配置されるいくつかの組み込みウィジェットがあります。 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。