ホームページ  >  記事  >  バックエンド開発  >  ThinkPHP の 3 つのジャンプ メソッド U()、redirect()、success() の違いは何ですか? ?

ThinkPHP の 3 つのジャンプ メソッド U()、redirect()、success() の違いは何ですか? ?

WBOY
WBOYオリジナル
2016-12-01 01:27:471718ブラウズ

ThinkPHP の 3 つのジャンプ メソッド U()、redirect()、success() の違いは何ですか? ?

返信内容:

ThinkPHP の 3 つのジャンプ メソッド U()、redirect()、success() の違いは何ですか? ?

uアシスタント機能はURLを生成するものであり、ジャンプ機能は含まれません。
成功とリダイレクトの違いは、前者ではジャンプ テンプレートにスマイリーフェイスのパターンがあることですが、それ以外に違いはありません。
答えはtpのソースコードを見れば分かります

U関数を使用してURLを生成します。
URLのリダイレクトにはパブリックリダイレクト機能を使用します。
コントローラーのリダイレクト メソッドは、URL のリダイレクトにも使用され、ジャンプ時間とジャンプ テキストを指定できます。
コントローラーの成功メソッドはリダイレクトと同じですが、:) スマイリーフェイスが付いています。
コントローラーでのエラー方法はリダイレクトと同じですが、泣き顔があります

ここを読むのが面倒な場合は、U 関数とリダイレクトの違いと ThinkPHP での成功方法をご覧ください。


その前に、U はメソッドとは呼ばれず、関数と呼ばれます。 U这个不叫方法,叫函数。
关于这三者的区别,我们可以看下thinkphp 3 つの違いについては、thinkphp のソース コードを参照してください。

U機能

リーリー

実際、彼のコメントはすでに戻り値が文字列型であり、実際に返されるのは生成された URL であることを非常に明確にしています。
これはアクションではなく、単なる補助機能です。

成功方法

リーリー

successerror はどちらもカプセル化された dispatchJump メソッドであることが明確にわかります。違いは 2 番目のパラメーターです。 successerror都是封装的dispatchJump方法,区别是第二个参数。
我们再去dispatchJumpdispatchJump に移動して見てみましょう。

リーリー

ここにはジャンプ コードはなく、テンプレートをロードし、いくつかのテンプレート変数を登録して表示するだけであることがわかります。
それで、どこにジャンプするのですか?当然テンプレに載ってます。デフォルトのテンプレートにアクセスして見てみましょう:

リーリー

を介してジャンプが行われていることがわかります。つまり、クライアントによって実装されるジャンプです。 javascriptlocation.href

リダイレクトメソッド

リーリー

redirect メソッドが最初に U 関数を使用してアドレスをパラメータとして取得し、それを redirect 関数に渡すことがわかります。これはこの関数のカプセル化です。

もう一度 redirect 関数を見てみましょう。 redirect方法先是用U函数获取了地址做参数,传给了redirect函数。是对这个函数的封装。
我们再去redirect リーリー

2 つのサーバー側ジャンプ メソッドを備えた非常に短い関数があり、それぞれ http ヘッダーが出力されたかどうかを判断するために使用されていることがわかります。それはサーバー側のジャンプです。

まとめ

U 関数は URL を生成するためにのみ使用され、ジャンプは実行されません。

success メソッド自体はジャンプしませんが、デフォルトのテンプレートにジャンプする javascript コードがあるためです。 U函数只会用来生成一个url,不会执行跳转。
success方法本身不会跳转,而是因为默认的模板上有跳转的javascript代码。
redirect redirect メソッドは、呼び出されたサーバー側関数によって実行されるジャンプです。

thinkPHP の公式ドキュメントを参照してください

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。