この記事では主に ThinkPHP3.1 でのウィジェットの新しい使い方を紹介します。必要な方は参考にしてください。
ThinkPHP3.0 バージョンのウィジェットのアクションとビューのサポートは比較的不十分であり、基本的なテンプレートのレンダリング出力。バージョン 3.1 のリリースによってもたらされたマルチレイヤー MVC 機能は、ウィジェットの実装方法に新しいアイデアをもたらしました。その実装方法を見てみましょう。
ThinkPHP3.1 ではマルチレイヤー MVC のサポートが追加されているため、バージョン 3.1 ではマルチレイヤー コントローラー機能をサポートできるため、コントローラー レイヤーに別のレイヤーであるウィジェット レイヤーを追加できます。
まず、プロジェクトの Lib ディレクトリの下に Widget ディレクトリを作成し、次のように TestWidget クラス (Lib/Widget/TestWidget.class.php) を作成します。
##TestWidget と以前のものの違いは、Widget クラスを継承せず、Action クラスを直接継承することです。これは、Action メソッドを TestWidget で直接呼び出すことができることを意味します。テンプレートのレンダリング出力。
定義が完了したら、このウィジェットをどのように呼び出すのでしょうか? W メソッドは絶対に機能しません。今回は R メソッドが必要です。
R メソッドの機能はモジュールの操作をリモートで呼び出すことですが、3.1 ではそれに新しい役割が与えられ、すべてのコントローラー層の操作メソッドの呼び出しをサポートできるようになりました。そのため、次のようにテンプレート内で Widget を呼び出すことができます。これ:class TestWidget extends Action{ public function hello($name=''){ echo ("hello,".$name."!"); } }
{:R('Test/hello',array('ThinkPHP'),'Widget')}
アクション コントロールに加えて、コントローラーの外部にある他のコントローラー層には URL 経由で直接アクセスできないため、この Widget メソッドは R メソッドを通じてのみ内部的に呼び出すことができます。
TestWidget クラスで Model を呼び出して他のデータを出力できます。独自のテンプレートをレンダリングする必要がある場合は、表示メソッドを直接呼び出すだけです。
hello,ThinkPHP!
プロジェクトの Tpl/Test/ ディレクトリに hello (Tpl/Test/hello.html) テンプレート ファイルを作成し、次の出力を追加します。
##
class TestWidget extends Action{ public function hello($name=''){ $this->assign('name',$name); $this->display('Test:hello'); } }前のウィジェットと同様にテンプレート ファイルを現在のディレクトリに置きたい場合は、次のように使用できます:
Hello,{$name}!この時点で、定義したばかりの hello テンプレート ファイルを Widget/Test/ ディレクトリに配置できます。 以上がこの記事の全内容です。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。 関連する推奨事項:
php に基づいて Excel または CSV にエクスポートする方法
以上がThinkPHP3.1でのウィジェットの使用についての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。