ホームページ  >  記事  >  バックエンド開発  >  パラメーターを使用して thinkphp のページネーションを修正する_PHP チュートリアル

パラメーターを使用して thinkphp のページネーションを修正する_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 14:54:01784ブラウズ

Thinkphp は、言うまでもなく、軽量の PHP MVC フレームワークです。私は数日前にこれに取り組み、フォト アルバムを作成しましたが、そのページング、特にパラメーターを使用したページネーションに非常に悩まされました。

マニュアルに従ってください。ただし、ページング クラスを直接見ても、それほど複雑ではありません。原理を理解した後は、$where 配列内のパラメータを分離し、GET メソッドでページング クラスに渡し、これらのパラメータをクエリ ステートメントに結合してパラメータ化されたページングを実装するだけです。その後、これを行うには、$where 配列で渡される名前の値がフォーム内の名前の値と一致している必要があることがわかりました。そうしないと、渡された場合、次のページでは受信されません。

別の質問があります。$where 配列には、$p=array('eq',$kid) などの別の配列が存在する可能性があります。変数 $p が $where に追加される場合は、マニュアルに従ってください。個別のパラメータを指定しても、効果はないようです。この問題を解決するときに、配列であるかどうかを判断して分離する関数を作成しました。これは再帰と同等です。

もう一つの問題は、ページングが接続されると、このページの操作名が自動的に追加されることです。つまり、元々 /Index/Pager/ だった場合、ページング後は /Index/Pager/Pager になります。これもまた混乱を招くのですが、理由がわかりません。

結局、私はまだマニュアルの指示に従っていませんでした。よく考えたらパラメータを渡すだけなのでそこまで絡む必要はないんじゃないでしょうか? show() 関数を変更し、URL パラメータのフィルタリング関数を削除し、直接ページングを実行します。たとえば、ページが /Index/Pager の場合、 ushow("/Index/Pager") を使用します (変更済み)。取得される内容は / です。 Index/Pager/&p=2 明らかに、p=2 は 2 ページ目です。これはパラメータなしのページネーションにも使用できます。実際、そのページングは​​少し複雑だと思います。パラメーターを使用してページングを作成する前に、この関数を変更し、たまたまここで使用しました。次に、アクションで必要なパラメータを組み立ててフロント デスクに渡すだけです。フロント デスクは JavaScript である必要があります。次に、コードのページング部分の後にこのパラメータを に追加します:

$show = $Page->ushow(__URL__."/".$_REQUEST[C(VAR_ACTION)]."/ ") ; (アセンブルされたページング関数を呼び出すということは、実際にはそれをカプセル化して開き、自分で処理することを意味します。)

$output="/KID/".$kid."/spbegintime/".$p ["spbegintime"]." /spendtime/".$p["spendtime"]."/spname/".$p["spname"]; (アクションでは、ページング パラメーターが組み立てられます。& を使用してパラメーターを区別することもできます。)

$this ->assign('outpager',$output); ページ変数をバインドします。

$("#ページャー a").click(function(){
var i=$("#ページャー a").index(this);
$("#ページャー a").eq(i). attr("href",$("#pager a").eq(i).attr("href")+"{$outpager}")
}); フロントデスクで接続アドレスを変更し、パラメーター。

TP 2.1 が最近リリースされましたが、まだチェックしていません、ふふ。時々、このようなフレームワークを使用することに違和感を覚えたり、感覚が欠けているように感じたりすることがあります。 JQ も同様です。$("form").submit(); を使用するだけですが、実際には、JS はページ上の 1 か 2 か所でのみ使用され、JQ は読み込まれないのではないかと思いました。 JQ を使用します。普通の JS のことは忘れてください。それがJQの目標の一つかもしれません(笑)。もちろん、開発者として、1 つのフレームワークや 1 つの言語に限定されることはできません。

最近、仕事で ccmall.cn を変更するのに苦労しています。ローカルで変更してサーバーにアップロードしても、サーバーを変更する権限がないので、どうしようもありません。 , そのため、私は変更をアップロードする必要があり、その後、上記の人がそれらをサーバーにアップロードできるようになります。咳。 。

ccmall.cn のような大規模な B2B または B2C の Web サイトが正常に構築された場合、毎日少なくとも数万の IP と数十万の PV に耐える必要があると思うことがありますが、このような主題はどうすればよいでしょうか。実用化されても何か問題はありますか?結局のところ、大学でのテーマと実際のプロジェクトの間には大きなギャップがあります。また、このプロジェクトでは、このような複雑なサーバーサイド コントロールに最も基本的な HTML タグが多数カプセル化されており、大量の ViewState が生成されるため、変更する際に非常に面倒です。それは必要ですか?修正の過程で、苦労して作成したサーバー側コントロールが 1 か所だけで使用されていることがよくあります。実装する機能は、いくつかの基本的な JS と単純な HTML タグで実現できます。咳。 。

いくつかの PHP プロジェクトを見た後、それらは依然としてシンプル、明確、簡潔で、肥大化していないと思います。 。 Microsoft は他人を愚か者として扱い、すべてをカプセル化することを好みます。 (これは asp.net のみを指します)。もちろん、asp.net が役に立たないと言っているわけではありません。ただ、多くの人が asp.net を正しく使用していないだけだと思います。実際、.net の強力な型、コンパイル済み型、ジェネリックス、Ado.net などはすべて非常に優れており、SQL CLR など、.net 3.0 以降に導入されたいくつかの新機能を含む、後からリリースされた asp.net MVC も同様です。このような論理データベース操作には非常に実用的です。

かなり冗長ですが、長い間書いていませんでした、ふふ。上記の意見の一部は単なる個人的な意見です。同意できない場合は、コメントする必要はありません。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/364672.html技術記事言うまでもなく、thinkphp は軽量の PHP MVC フレームワークです。私は数日前にこれを試してフォト アルバムを作成しましたが、そのページング、特にパラメータ化されたページングが気になりました。 ...