ディレクトリ | 呼び出しパス | 説明 |
ライブラリ/コア
| Think.Core
| コアライブラリパッケージ
|
リブ/行動
| 思考・行動
| 組み込みの動作ライブラリ パッケージ
|
ライブラリ/ドライバー
| 考えるドライバー
| 内蔵ドライバーライブラリパッケージ
|
ライブラリ/テンプレート
| Think.テンプレート
| 組み込みのテンプレートエンジンライブラリパッケージ
|
コア クラス ライブラリ パッケージには、次のコア クラス ライブラリが含まれています。
クラス名 |
説明 |
アクション |
システム基本コントローラークラス |
アプリ |
システムアプリケーションクラス |
行動 |
システム動作基礎クラス |
キャッシュ |
システムキャッシュクラス |
DB |
システム抽象データベースクラス |
派遣者 |
URLスケジュールクラス |
ログ |
システムログクラス |
モデル |
システム基本モデルクラス |
考える |
システムエントリと静的クラス |
ThinkException |
システム基本例外クラス |
見る |
クラスを見る |
ウィジェット |
システムウィジェット基本クラス |
アプリケーションライブラリ
アプリケーション クラス ライブラリは、プロジェクトで定義または使用されるクラス ライブラリを指します。これらのクラス ライブラリも、ThinkPHP の命名規則に従います。アプリケーション ライブラリ ディレクトリは、プロジェクト ディレクトリの下の Lib ディレクトリにあります。アプリケーション ライブラリには、アクション ライブラリ、モデル ライブラリ、またはその他のツール ライブラリを含む幅広い範囲があり、通常は次のものが含まれます。
ディレクトリ |
呼び出しパス |
説明 |
リブ/アクション |
@.アクションまたは自動ロード |
コントローラークラスライブラリパッケージ |
ライブラリ/モデル |
@.Model または自動ロード |
モデルクラスライブラリパッケージ |
リブ/行動 |
メソッド B を使用して自動的に呼び出すかロードします |
アプリケーション動作ライブラリパッケージ |
ライブラリ/ウィジェット |
Wメソッドを使用してテンプレート内で呼び出す |
ウィジェットクラスライブラリパッケージを適用する |
プロジェクトは、独自のニーズに応じて、Lib/Common、Lib/Tool などの独自のクラス ライブラリ パッケージをプロジェクト クラス ライブラリ ディレクトリに追加できます。
クラスライブラリのインポート
1. 明示的なインポート
ThinkPHP は Java のクラス ライブラリのインポート メカニズムをシミュレートし、インポート メソッドを均一に使用してクラス ファイルをロードします。インポート メソッドは、ThinkPHP の組み込みクラス ライブラリ インポート メソッドであり、便利で柔軟なファイル インポート メカニズムを提供し、PHP の require メソッドと include メソッドを完全に置き換えることができます。例:
- import("Think.Util.Session");
- import("App.Model.UserModel");
インポート メソッドにはキャッシュと検出のメカニズムがあり、別の場所から同じ名前のクラス ライブラリ ファイルがインポートされることはありません。
注: Unix または Linux ホストでは大文字と小文字が異なるため、インポート メソッドを使用する場合は、ディレクトリ名とクラス ライブラリ名の大文字と小文字に注意してください。そうしないと、インポートは失敗します。インポート方法の場合、システムはインポートされたクラス ライブラリ ファイルの場所を自動的に識別します。ThinkPHP の規則では、Think、ORG、および Com パッケージのインポートは基本クラス ライブラリとしてインポートされます。それ以外の場合は、基本クラス ライブラリとみなされます。プロジェクト アプリケーション クラス ライブラリのインポート。
- import("Think.Util.Session");
- import("ORG.Util.Page");
上記の 2 つのメソッドは、Think 基本クラス ライブラリの Util/Session.class.php ファイルと ORG 拡張クラス ライブラリ パッケージの Util/Page.class.php ファイルをそれぞれインポートします。
プロジェクトのアプリケーション クラス ライブラリ ファイルをインポートするのも非常に簡単で、基本クラス ライブラリをインポートする方法と似た次の方法を使用するだけです。
import("MyApp.Action.UserAction");-
import("MyApp.Model.InfoModel");-
上記のメソッドはそれぞれ、MyApp プロジェクトの下に Lib/Action/UserAction.class.php クラス ファイルと Lib/Model/InfoModel.class.php クラス ファイルをインポートすることを表します。
通常、必要なクラス ライブラリ ファイルを現在のプロジェクトにインポートするため、次のメソッドを使用してコードを簡素化できます
import("@.Action.UserAction");-
import("@.Model.InfoModel");-
2番目、エイリアスインポート
名前空間インポート メソッドに加えて、インポート メソッドでもエイリアス インポートをサポートできます。エイリアス インポートを使用するには、まずプロジェクト構成ディレクトリにエイリアスを追加して、必要なクラス ライブラリ エイリアスを定義する必要があります。たとえば、プロジェクトで使用されます:
配列を返す(-
'rbac' =>LIB_PATH.'Common/Rbac.class.php',-
'page' =>LIB_PATH.'Common/Page.class.php',-
);-
これで、今すぐ直接使用できます:
import("rbac");-
import("ページ");-
Rbac クラスと Page クラスのインポート。エイリアス インポート メソッドは、インポート メソッドの 2 番目と 3 番目のパラメーターの使用を禁止します。欠点は、関連するエイリアスを名前空間インポート メソッドで定義する必要があることです。前進。
サードパーティライブラリをインポートする
サードパーティのクラス ライブラリは、システム拡張ディレクトリの下の Vendor ディレクトリに一律に配置され、ベンダー メソッドを使用してインポートされます。ただし、パラメータはデフォルト値が変更されている点を除き、インポート メソッドと同じです。たとえば、Vendor ディレクトリの下に Zend の FilterDir.php を配置します。このとき、Dir ファイルのパスは次のようになります。
VendorZendFilterDir.php では、ベンダー メソッドを使用してインポートして使用します:
ベンダー('Zend.Filter.Dir');-
Dir クラス ライブラリをインポートできます。
Vendor メソッドは、インポート メソッドと同じ基本的なパスとファイル名のサフィックス パラメーターもサポートできます。例:
Vendor('Zend.Filter.Dir',dirname(__FILE__),'.class.php');-
自動読み込み
ほとんどの場合、クラス ライブラリを手動でインポートする必要はありませんが、構成を通じて自動ロード メカニズムを使用できます。これにより、パフォーマンスが大幅に向上します。自動ロードには、ロードの優先順位に応じて、エイリアスの自動ロード、システム ルールの自動ロード、カスタム パスの自動ロードの 3 つの状況があります。
1. エイリアスの自動読み込み
エイリアスを定義する方法については前述し、インポート メソッドを使用してエイリアスをインポートしました。実際、エイリアスを定義するすべてのクラス ライブラリは手動でロードする必要はなく、システムがオンデマンドで自動的にロードします。
2. システムルールは自動的にロードされます
エイリアスを定義しない場合、システムは最初に組み込みルールに従ってロードを判断します。システム ルールはビヘイビア クラス、モデル クラス、およびコントローラー クラスに対してのみ適用されます。検索ルールは次のとおりです。
クラス名 |
ルール |
説明 |
行動カテゴリー |
ルール1 |
システムクラスライブラリディレクトリの下のBehaviorディレクトリを検索します |
ルール 2 |
システム拡張ディレクトリの下の Behavior ディレクトリを検索します |
ルール 3 |
アプリケーションライブラリディレクトリの下でBehaviorディレクトリを検索します |
ルール 4 |
スキーマ拡張が有効な場合は、スキーマ拡張ディレクトリの下の Behavior ディレクトリを検索します |
モデルクラス |
ルール1 |
グループ化が有効な場合は、アプリケーション クラス ライブラリ ディレクトリのモデル/現在のグループ ディレクトリを検索します |
ルール 2 |
アプリケーションクラスライブラリの下のModelディレクトリを検索します |
ルール 3 |
システム拡張ディレクトリの下の Model ディレクトリを検索します |
コントローラークラス |
ルール1 |
グループ化が有効な場合は、アプリケーション クラス ライブラリ ディレクトリのアクション/現在のグループ ディレクトリを検索します |
ルール 2 |
プロジェクトのクラスライブラリディレクトリの下にあるアクションディレクトリを検索します |
ルール 3 |
システム拡張ディレクトリの下のアクションディレクトリを検索します |
注: 検索の優先順位は上から下です。見つかった場合は返され、後続のルールでは検出されなくなります。すべてのルールの検出が完了した後もクラス ライブラリが見つからない場合は、3 番目のカスタム パスの自動読み込み検出が開始されます。
3. カスタムパスの自動読み込み
クラス ライブラリが特定のディレクトリに集中しており、あまり多くのエイリアス インポートを定義したくない場合は、カスタム パスの自動読み込み方法を使用できます。この方法では、たとえば、プロジェクト構成ファイルに自動的に読み込まれる検索パスを追加する必要があります。 :
- 'APP_AUTOLOAD_PATH' =>'@.Common,@.Tool',
は、現在のプロジェクトのクラス ライブラリ ディレクトリの Common ディレクトリと Tool ディレクトリにあるクラス ライブラリを自動的にロードできることを意味します。複数の検索パスをカンマで区切って、定義の順序、つまり自動検索の順序に注意してください。
注: 自動検索パス定義では名前空間メソッドのみを使用できます。つまり、このメソッドはプロジェクト クラス ライブラリ ディレクトリと基本クラス ライブラリ ディレクトリの下にあるクラス ライブラリ ファイルのみを自動的にロードできます。
-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ----------
コントローラー:
1. URLパターン
従来のファイル エントリ アクセスは、URL パラメータによって均一に解析され、スケジュールされます。
ThinkPHP は、通常モード、PATHINFO、REWRITE、互換モードを含む 4 つの URL モードをサポートしており、URL_MODEL パラメーターを設定することで定義できます。
1. 通常モード: URL_MODEL を 0 に設定します
従来の URL パラメーター モードを使用します
- http://サーバー名/アプリ名/?m=module&a=action&id=1
2. PATHINFO モード (デフォルト モード): URL_MODEL を 1 に設定します
PATHINFO モードはデフォルトで使用され、柔軟で使いやすい URL サポートを提供します。 PATHINFO モードは、 などのモジュールと操作を自動的に識別します。
- http://サーバー名/アプリ名/module/action/id/1/または
- http://サーバー名/アプリ名/モジュール,アクション,ID,1/
3. REWRITE モード: URL_MODEL を 2 に設定します
この URL モードは PATHINFO モードと同じ機能を持ちますが、URL にエントリ ファイルを記述する必要がなく、.htaccess ファイルを定義できる点が異なります。 Apache の URL_REWRITE モジュールを有効にすると、REWRITE モードを有効にすることができます。詳細については、以下の URL 書き換えセクションを参照してください。
4. 互換モード: URL_MODEL を 3 に設定します。 互換モードは、通常モードと PATHINFO モードを組み合わせたもので、テンプレートやプログラムを変更することなく、アプリケーションが直接 PATHINFO モードに切り替えることができます。互換モード URL は、あらゆる動作環境をサポートできます。
互換モードの効果は次のとおりです:
http://サーバー名/アプリ名/?s=/module/action/id/1/-
また、パラメータ分離記号の定義もサポートできます。たとえば、URL_PATHINFO_DEPR が ~ の場合、次の URL が有効です:
http://サーバー名/アプリ名/?s=module~action~id~1-
実際、VAR_PATHINFO パラメータは、通常モードの実装で PATHINFO モードをシミュレートするために使用されます。ただし、互換モードでは、s 変数を自分で渡す必要はなく、システムが自動的に URL 部分を完成させます。この機能により、テンプレート ファイル内の URL アドレス接続を変更せずに、互換モードと PATHINFO モードを直接切り替えることができます。開発時に PATHINFO モードを使用することをお勧めします。環境がデプロイ時に PATHINFO をサポートしていない場合は、プログラムとテンプレートを変更する必要はありません。
2. モジュールと操作
http://ドメイン名/プロジェクト名/グループ名/モジュール名/オペレーション名/その他のパラメータディスパッチャーは、URLに基づいて現在のプロジェクト、グループ(定義されている場合)モジュール、オペレーション、および実行する必要があるその他のパラメータを取得します。場合によっては、プロジェクト名が URL アドレスに表示されない場合があります (通常、エントリ ファイルは特定のプロジェクトを表し、エントリ ファイルは非表示にすることができます)。
各モジュールはコントローラー クラスであり、通常はプロジェクトの LibAction ディレクトリの下にあります。
バージョン 3.1 以降、操作メソッドのサフィックスを設定するための ACTION_SUFFIX 構成パラメータが追加されました。 たとえば、次のように設定した場合:
'ACTION_SUFFIX'=>'行動'-
すると、あるモジュールにアクセスするadd操作は、モジュールクラスを読み込む操作メソッドに相当し、本来のaddメソッドからaddActメソッドに変更されます。
3. コントローラーと空のオペレーション、空のモジュールを定義する
アプリケーションがデータベースと対話する必要がない場合、モデル クラスを定義する必要はありませんが、アクション コントローラーを定義する必要があります。アクション コントローラーは通常、プロジェクトの Lib/Action ディレクトリの下にあります。
Action コントローラーの定義は非常に単純で、Action 基本クラスを継承するだけです。例:
- クラス UserAction は Action を拡張します{}
コントローラーファイルの名前はUserAction.class.phpです。
空の操作とは、システムが指定された操作メソッドを見つけられない場合に、空の操作 (_empty) メソッドを見つけて実行することを意味します。このメカニズムを使用すると、エラー ページと一部の URL の最適化を実現できます。
空のモジュールの概念は、システムが指定されたモジュール名を見つけられない場合、システムが空のモジュール (EmptyAction) を見つけようとすることを意味し、このメカニズムを使用してエラー ページをカスタマイズし、URL を最適化できます。
4. モジュールのグループ化
モジュールのグループ化に関連する構成パラメータには次のものがあります。
設定パラメータ |
説明 |
APP_GROUP_LIST |
プロジェクトのグループ化リスト (構成とはグループ化を有効にすることを意味します) |
デフォルト_グループ |
デフォルトのグループ化 (デフォルト値はホーム) |
TMPL_FILE_DEPR |
グループテンプレート内のモジュールとオペレーションの区切り文字、デフォルト値は「/」です |
VAR_グループ |
グループ化された URL パラメータ名、デフォルトは g (通常モードの URL にのみ必要) |
たとえば、現在のプロジェクトを 2 つのグループ (それぞれフロントエンド機能とバックエンド機能を表すホームと管理者) に分割する場合、プロジェクト構成に次の構成を追加するだけで済みます。
'APP_GROUP_LIST' => 'Home,Admin', //プロジェクトグループ設定-
'DEFAULT_GROUP' => 'ホーム', //デフォルトグループ -
複数のグループはカンマで区切ることができます。デフォルトでは 1 つのグループのみを設定できます。
5. URL 擬似静的
ThinkPHP は、現在の操作の通常の実行に影響を与えることなく、URL_HTML_SUFFIX パラメーターを設定することによって、URL の末尾に必要な静的サフィックスを追加できます。たとえば、
を設定します
'URL_HTML_SUFFIX'=>'shtml'-
その場合は、次のURLを貼ってください
http://サーバー名/ブログ/read/id/1-
になります
http://サーバー名/ブログ/read/id/1.shtml-
後者は静的ページの URL 特性をより多く持っていますが、前の URL と同じ実行効果があり、元のパラメータの使用には影響しません。
注: 擬似静的サフィックスを設定するときに、サフィックスに「.」を含める必要はありません。したがって、次の構成は実際には同等です:
'URL_HTML_SUFFIX'=>'.shtml'-
疑似静的設定後、一貫した URL を動的に生成する必要がある場合は、U メソッドを使用してテンプレート ファイルに URL を生成できます。
バージョン 3.1 以降、デフォルトですべての静的サフィックスがサポートされ、現在の疑似静的サフィックスが定数 __EXT__ に記録されますが、通常のページ アクセスには影響しません。現在の擬似静的サフィックスを取得したい場合は、定数
__EXT__ を介して取得するだけです。
設定された擬似静的サフィックスをサポートしたいだけの場合は、複数のサフィックスをサポートするように直接設定できます。例:
'URL_HTML_SUFFIX'=>'html|shmtl|xml' // 複数の分割 -
複数の擬似静的サフィックスが設定されている場合、U 関数を使用して生成される URL アドレスでは最初のサフィックスがデフォルトで使用されます。また、URL アドレスを生成するためのサフィックスの指定もサポートされています。
6. URL ルーティング
ThinkPHP は URL ルーティング機能をサポートしています。ルーティング機能を有効にするには、URL_ROUTER_ON パラメーターを true に設定する必要があります。ルーティング機能を有効にし、URL_ROUTE_RULES パラメーターを構成すると、現在の URL に一致するルート名がルート定義内で見つかった場合、システムはルートの解析とリダイレクトを実行します。
詳細については、こちらをご覧ください: http://doc.thinkphp.cn/manual/url_route.html
7. URL書き換え
詳細については、こちらをご覧ください: http://doc.thinkphp.cn/manual/url_rewrite.html<code><code><code><code><code><code><code><code><code><code><code><code>
8. URLの生成
<code><code><code><code><code><code><code><code><code><code><code><code>为了配合所使用的URL模式,我们需要能够动态的根据当前的URL设置生成对应的URL地址,为此,ThinkPHP内置提供了U方法,用于URL的动态生成,可以确保项目在移植过程中不受环境的影响。
U方法的定义规则如下(方括号内参数根据实际应用决定):<code>
- U('[グループ/モジュール/オペレーション]?パラメータ' [,'パラメータ','擬似静的サフィックス','ジャンプするかどうか','表示ドメイン名'])
<code><code><code><code><code><code><code><code><code><code><code><code><code>如果不定义项目和模块的话 就表示当前项目和模块名称,下面是一些简单的例子:<code>
- U('User/add') // Userモジュールの追加操作のURLアドレスを生成します
- U('Blog/read?id=1') // ブログモジュールの読み取り操作とID 1のURLアドレスを生成します
- U('Admin/User/select') // AdminグループのUserモジュールのselectオペレーションのURLアドレスを生成します
<code><code><code><code><code><code><code><code><code><code><code><code><code>U方法的第二个参数支持数组和字符串两种定义方式,如果只是字符串方式的参数可以在第一个参数中定义,例如:<code>
- U('ブログ/cate',array('cate_id'=>1,'status'=>1))
- U('ブログ/カテゴリー','cate_id=1&status=1')
- U('ブログ/cate?cate_id=1&status=1')
<code><code><code><code><code><code><code><code><code><code><code><code><code>三种方式是等效的,都是 生成Blog模块的cate操作 并且cate_id为1 status为1的URL地址
但是不允许使用下面的定义方式来传参数<code>
- U('ブログ/cate/cate_id/1/status/1')
<code><code><code><code><code><code><code><code><code><code><code><code>
プロジェクトの異なる URL 設定に従って、同じ U メソッド呼び出しで、 などの異なる URL アドレス効果をインテリジェントに生成できます。
- U('Blog/read?id=1') は例です。
現在の URL が通常モードに設定されている場合、最後に生成された URL アドレスは次のとおりです:
http://serverName/index.php?m=Blog&a=read&id=1
現在の URL が PATHINFO モードに設定されている場合、同じ方法最終的に生成される URL アドレスは次のとおりです:
http://serverName/index.php/Blog/read/id/1
現在の URL が REWRITE モードに設定されている場合、同じ方法で生成される最終的な URL アドレスは次のとおりです:
http ://serverName/ Blog/read/id/1
現在の URL が REWRITE モードに設定され、擬似静的サフィックスが .html に設定されている場合、同じメソッドで生成される最終的な URL アドレスは次のようになります:
http: //serverName/Blog/read/id/ 1.html
U メソッドは、ルーティング ルールを次のように定義する場合、ルーティングもサポートできます:
- 'news/:idd'=>'ニュース/読む'
それでは、ご利用いただけます
- う('/news/1')
最終的に生成される URL アドレスは次のとおりです:
- http://サーバー名/index.php/news/1
注: テンプレート ファイル内で U メソッドを直接使用する場合は、{:U('パラメータ 1', 'パラメータ 2'...)} を使用する必要があります。詳細については、「8.3 テンプレート エンジンでの関数の使用」を参照してください。章。
アプリケーションに複数のサブドメインの操作アドレスが含まれる場合は、U メソッドでアドレスを生成する必要があるドメイン名を指定することもできます。例: <code>
- U('ブログ/read@blog.thinkphp.cn','id=1');
<code>@ 指定する必要があるドメイン名を渡すだけです。
さらに、U メソッドの 5 番目のパラメーターが true に設定されている場合、現在のドメイン名が自動的に認識され、現在のアドレスのサブドメイン名がサブドメイン名の展開設定 APP_SUB_DOMAIN_DEPLOY および APP_SUB_DOMAIN_RULES に基づいて自動的に生成されることを意味します。 。
URL_CASE_INSENSITIVE がオンになっている場合、小文字の URL アドレスが均一に生成されます。
9. URLケース
プロジェクト構成に <code> を追加するだけです
- 'URL_CASE_INSENSITIVE' =>true
<code>URL アクセスで大文字と小文字が区別されなくなっていることがわかります。
ここで注意すべき点は、UserTypeAction のモジュール クラスを定義する場合、URL アクセスは次のようにする必要があるということです: <code>
- http://サーバー名/index.php/user_type/list
- //
の代わりに
- http://サーバー名/index.php/usertype/list
<code>利用系统提供的U方法可以为你自动生成相关的URL地址。
如果设置<code>システムが提供する U メソッドを使用して、関連する URL アドレスを自動的に生成します。
設定されている場合
-
'URL_CASE_INSENSITIVE' =>false
<code>的话,URL就又变成:<code>
の場合、URLは次のようになります:
-
http://サーバー名/index.php/ユーザータイプ/list
<code>
注: URL の大文字と小文字の区別はシステムの命名規則を変更しません。システムの命名規則に従うことによってのみ、URL の大文字と小文字の区別を正しく実装できます。
<code>10. 手術前と手術後
システムは、現在の操作に前操作と後操作があるかどうかを検出し、それらが存在する場合は、前操作と後操作のメソッド名をメソッドの前に追加します。実行されます。例:
🎜 🎜
- クラス CityAction は Action{
を拡張します
- //事前操作方法
- パブリック関数 _before_index(){
- echo 'before
';
- }
- パブリック関数index(){
- echo 'index
';
- }
- //操作後のメソッド
- パブリック関数 _after_index(){
- echo 'after
';
- }
- }
どのような操作メソッドでも、このようなルールに従って事前メソッドと事後メソッドを定義できます。
<code><code><code><code><code><code><code><code><code><code><code><code>
現在の操作で操作メソッドが定義されていないが、テンプレート ファイルを直接レンダリングする場合でも、事前メソッドと事後メソッドが定義されていれば、その操作は引き続き有効になります。実際のテンプレート出力は現在の操作のみであり、通常、前操作と後操作には出力がありません。
一部のメソッドで終了またはエラー出力が使用されている場合、ポストメソッドが実行されなくなる可能性があることに注意してください。
たとえば、システム アクションのエラー メソッドが現在のオペレーションで呼び出された場合、ポスト オペレーションは実行されませんが、成功メソッドのポスト メソッドの実行は影響を受けません。
<code><code><code><code><code><code><code><code><code><code><code><code>
<code><code>
11. モジュール間通話
<code><code><code><code>例如,我们在Index模块调用User模块的操作方法<code>例えば、Indexモジュール内でUserモジュールの操作メソッドを呼び出します
クラス IndexAction は Action{ を拡張します
パブリック関数index(){
// UserAction をインスタンス化する
$User = new UserAction();
//その他のユーザー操作
//...
$this->display() //出力ページテンプレート
}
}<code><code>
システムはアクション コントローラーを自動的にロードするため、UserAction クラスをインポートせずに直接インスタンス化できます。 そして、モジュール間の呼び出しを容易にするために、システムには A メソッドと R メソッドが組み込まれています。
$User = A('User');<code><code><code>事实上,A方法还支持跨分组或者跨项目调用,默认情况下是调用当前项目下面的模块。
跨项目调用的格式是:
A('[项目名://][分组名/]模块名')
例如:<code>
<code><code>- 実際、メソッド A はグループ間またはプロジェクト間の呼び出しもサポートしており、デフォルトでは、現在のプロジェクトの下にあるモジュールが呼び出されます。
プロジェクト間の呼び出しの形式は次のとおりです: - A('[プロジェクト名://][グループ名/]モジュール名')
- 例:
-
<code><code>A('User') //現在のプロジェクトの User モジュールの呼び出しを示します
A('Admin://User') //Admin プロジェクトの User モジュールの呼び出しを示します
A('Admin/User') //Admin グループを呼び出す User モジュールを表します🎜
🎜A('Admin://Tool/User') //管理プロジェクトのツールグループを呼び出すユーザーモジュールを表します🎜
🎜🎜
R メソッドは、モジュールの操作メソッドの呼び出しを表します。呼び出し形式は、 🎜🎜R('[プロジェクト名://][グループ名/]モジュール名/操作名',array('パラメーター 1','パラメーター) です。 2分…))🎜🎜例:
- R('User/info') //現在のプロジェクトの User モジュールの info 操作メソッドの呼び出しを示します
- R('Admin/User/info') //AdminグループのUserモジュールのinfo操作メソッドの呼び出しを示します
- R('Admin://Tool/User/info') //AdminプロジェクトのToolグループのUserモジュールのinfo操作メソッドの呼び出しを示します
R メソッドは、呼び出される操作メソッドのパラメーターを渡す必要性もサポートしています。たとえば、User モジュールで info メソッドを定義します。
クラス UserAction は Action{- を拡張します
保護された関数情報($id){-
$User = M('User');-
$User->find($id);-
//...-
}-
}-
次に、他のモジュールを呼び出すことができます:
R('ユーザー/情報',array(15))-
現在のプロジェクトの User モジュールの info 操作メソッドが呼び出され、id パラメータが 15 に渡されることを示します
<code>コード>コード>
<code><code><code>12. ページジャンプ
<code><code><code>システムの Action クラスには、success と error という 2 つの組み込みジャンプ メソッドがあり、ページ ジャンプ プロンプトに使用され、ajax 送信をサポートできます。使用方法は非常に簡単です。例:
<code><code><code>系统的Action类内置了两个跳转方法success和error,用于页面跳转提示,而且可以支持ajax提交。使用方法很简单,举例如下:<code>
$User = M('User') //User オブジェクトをインスタンス化します-
$result = $User->add($data);
- if($result){
- //設定が成功した後にジャンプするページのアドレスを設定します。デフォルトの戻りページは $_SERVER['HTTP_REFERER'] です。
$this->success('追加に成功しました', 'ユーザー/リスト');-
} 他 {-
//エラーページのデフォルトのジャンプページは前のページに戻ります。通常は設定する必要はありません-
$this->error('追加に失敗しました');-
}-
-
成功メソッドとエラーメソッドには対応するテンプレートがあり、設定可能です。デフォルト設定では、両方のメソッドに対応するテンプレートは次のとおりです。
//デフォルトのエラージャンプに対応するテンプレートファイル
<code><code><code>'TMPL_ACTION_ERROR' => 'Tpl/dispatch_jump.tpl';
- //対応するテンプレート ファイルはデフォルトで正常にジャンプされます
- 'TMPL_ACTION_SUCCESS' => 'Tpl/dispatch_jump.tpl';
- プロジェクト内でテンプレートファイルを使用することもできます
- //デフォルトのエラージャンプに対応するテンプレートファイル
'TMPL_ACTION_ERROR' => 'パブリック: エラー';
- //対応するテンプレート ファイルはデフォルトで正常にジャンプされます
- 'TMPL_ACTION_SUCCESS' => 'パブリック:成功';
- テンプレート ファイルではテンプレート タグを使用でき、次のテンプレート変数を使用できます。
-
$msgタイトル
アクションのタイトル
|
$メッセージ |
ページプロンプト情報
|
$ステータス |
操作ステータス 1 は成功を意味し、0 は失敗を意味します。プロジェクト自体によって特定のルールを定義することもできます。
| $waitSecond
| ジャンプ待ち時間を秒単位で表示
| $ジャンプURL
| ジャンプページアドレス
| success メソッドと error メソッドは、現在のリクエストが Ajax リクエストであるかどうかを自動的に判断します。Ajax リクエストの場合、ajaxReturn メソッドが呼び出されて情報が返されます。詳細については、後の「AJAX リターン」セクションを参照してください。
<code><code><code>
バージョン 3.1 以降、error メソッドと success メソッドは値の受け渡しをサポートしており、jump テンプレート メソッドでも ajax メソッドでも、assign メソッドを使用してパラメータを渡すことができます。例:
- $this->assign('var1','value1');
- $this->assign('var2','value2');
- $this->error('パラメータが間違っています','ジャンプするURLアドレス');
通常の方法で送信すると、var1 変数と var2 変数がエラー テンプレートのテンプレート変数に割り当てられます。
AJAX 経由で送信する場合、ajaxReturn メソッドが自動的に呼び出され、値 (ジャンプ URL アドレス url とステータス値 status を含む) が渡されます。
<code><code><code>
13. リダイレクト
Actionクラスのredirectメソッドでページリダイレクト機能を実装できます。
リダイレクト メソッドのパラメーターの使用法は、U 関数の使用法と一致しています (上記の URL 生成部分を参照)。例:
- //新しいモジュールのカテゴリ操作にリダイレクトします
- $this->redirect('New/category', array('cate_id' => 2), 5, 'ページジャンプ...');
上記の使用法は、5秒滞在後にニュースモジュールのカテゴリー操作にジャンプし、リダイレクト後に単語ページを表示するものです。
特定のモジュールの操作メソッドではなく、指定した URL アドレスにリダイレクトしたいだけの場合は、次のようにリダイレクト メソッドを直接使用してリダイレクトできます。
//指定された URL アドレスにリダイレクトします-
リダイレクト('/N