ThinkPHP バージョン 3.1 の Action パラメーター バインディング機能は、URL 変数と操作メソッドのパラメーター バインディング サポートを提供し、操作メソッドの定義とパラメーターの取得をより明確にし、モジュール間での操作メソッドの呼び出しも容易にします。この新しい機能は、以前の操作メソッドの使用には影響しません。新しいメソッドを使用して、以前の操作メソッドの定義を変換することもできます。
アクションパラメータバインディングの原理は、URL内のパラメータ(グループ、モジュール、操作アドレスを除く)をコントローラの操作メソッド内のパラメータにバインドすることです。たとえば、Blog モジュールには read メソッドと archive メソッドという 2 つの操作メソッドを定義しました。read 操作では id パラメータを指定する必要があるため、archive メソッドでは year (年) と month (月) の 2 つのパラメータを指定する必要があります。
URLのアクセスアドレスは:
2 つの URL アドレスの id パラメーターと年月パラメーターは、読み取り操作メソッドとアーカイブ操作メソッドの同じ名前のパラメーターに自動的にバインドされます。
出力結果は次のとおりです:
Action パラメータにバインドされるパラメータは、URL で渡されるパラメータと同じ名前を持つ必要がありますが、パラメータの順序は同じである必要はありません。つまり
アクセス結果は上記と一致しています。URL 内のパラメータの順序と操作メソッド内のパラメータの順序は、パラメータ名が一致していることを確認することが重要です。
ユーザーがアクセスした URL アドレスが次の場合 (なぜこの方法でアクセスするのかは言うまでもありません):
その後、次の例外プロンプトがスローされます:
パラメータエラー: id
エラーの理由は非常に単純です。読み取り操作メソッドを実行するときに id パラメーターを渡す必要がありますが、メソッドが URL アドレスから正しい id パラメーター情報を取得できないためです。ユーザーからの入力は信頼できないため、読み取りメソッドの id パラメーターにデフォルト値を追加することをお勧めします。例:
訪問時はこちら
すると出力されます
ご来店の際は
の場合、出力: