ThinkPHP の 3 つのジャンプ メソッド U()、redirect()、success() の違いは何ですか? ?
ThinkPHP の 3 つのジャンプ メソッド U()、redirect()、success() の違いは何ですか? ?
uアシスタント機能はURLを生成するものであり、ジャンプ機能は含まれません。
成功とリダイレクトの違いは、前者ではジャンプ テンプレートにスマイリーフェイスのパターンがあることですが、それ以外に違いはありません。
答えはtpのソースコードを見れば分かります
U関数を使用してURLを生成します。
URLのリダイレクトにはパブリックリダイレクト機能を使用します。
コントローラーのリダイレクト メソッドは、URL のリダイレクトにも使用され、ジャンプ時間とジャンプ テキストを指定できます。
コントローラーの成功メソッドはリダイレクトと同じですが、:) スマイリーフェイスが付いています。
コントローラーでのエラー方法はリダイレクトと同じですが、泣き顔があります
ここを読むのが面倒な場合は、U 関数とリダイレクトの違いと ThinkPHP での成功方法をご覧ください。
その前に、U
はメソッドとは呼ばれず、関数と呼ばれます。 U
这个不叫方法,叫函数。
关于这三者的区别,我们可以看下thinkphp
3 つの違いについては、thinkphp
のソース コードを参照してください。
実際、彼のコメントはすでに戻り値が文字列型であり、実際に返されるのは生成された URL であることを非常に明確にしています。
これはアクションではなく、単なる補助機能です。
success
と error
はどちらもカプセル化された dispatchJump
メソッドであることが明確にわかります。違いは 2 番目のパラメーターです。 success
和error
都是封装的dispatchJump
方法,区别是第二个参数。
我们再去dispatchJump
dispatchJump
に移動して見てみましょう。
ここにはジャンプ コードはなく、テンプレートをロードし、いくつかのテンプレート変数を登録して表示するだけであることがわかります。
それで、どこにジャンプするのですか?当然テンプレに載ってます。デフォルトのテンプレートにアクセスして見てみましょう:
を介してジャンプが行われていることがわかります。つまり、クライアントによって実装されるジャンプです。 javascript
的location.href
redirect
メソッドが最初に U
関数を使用してアドレスをパラメータとして取得し、それを redirect
関数に渡すことがわかります。これはこの関数のカプセル化です。 もう一度 redirect
関数を見てみましょう。 redirect
方法先是用U
函数获取了地址做参数,传给了redirect
函数。是对这个函数的封装。
我们再去redirect
リーリー
まとめ
U
関数は URL を生成するためにのみ使用され、ジャンプは実行されません。 success
メソッド自体はジャンプしませんが、デフォルトのテンプレートにジャンプする javascript
コードがあるためです。 U
函数只会用来生成一个url,不会执行跳转。success
方法本身不会跳转,而是因为默认的模板上有跳转的javascript
代码。redirect
redirect
メソッドは、呼び出されたサーバー側関数によって実行されるジャンプです。
thinkPHP の公式ドキュメントを参照してください