複数のレイアウトを作成し、別の場所でレイアウトを切り替えることを選択する人もいますが、これではコードの再利用性が最大化されず、柔軟性が十分ではありません。 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 サイトの他の関連記事を参照してください。