程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 搞定thinkphp帶參分頁

搞定thinkphp帶參分頁

編輯:關於PHP編程

thinkphp是什麼就不用多說了,一個輕量級的PHP MVC框架;前幾天搞搞這個東西,做了個相冊,發現,它的分頁很讓我糾結,特別是帶參分頁。

按照它的手冊來吧,沒多大效果;後來,直接看它的分頁類,也不是很復雜。搞明白了它的原理,只不過就是將$where數組中的參數,分離,以GET的方式,傳遞到分頁類中,然後再將這些參數又組合到查詢語句中,實現帶參分頁。然後,才發現,在$where數組中傳遞的,和表單中的name值要一致,才能這樣做。否則的話,傳遞過來,到了下一頁,是收不到的。

還有一個問題,$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就是第二頁。這個也可以用於不帶參的分頁。實際上,我就是覺得它這個分頁有點糾結,在還沒有寫到帶參分頁的時候,我就改裝了這個函數,正好,這裡用上了。然後呢,就是把需要的參數在Action裡面組裝一下,傳遞到前台,到前台哪裡呢,肯定是javascript裡面。然後再將這個參數,添加到分頁後的<a>標簽裡面;部分代碼:

$show = $Page->ushow(__URL__."/".$_REQUEST[C(VAR_ACTION)]."/");(調用組裝後的分頁函數,實際上,就是將它封裝好的,又打開,自己處理。)

$output="/KID/".$kid."/spbegintime/".$p["spbegintime"]."/spendtime/".$p["spendtime"]."/spname/".$p["spname"];(Action裡面,組裝分頁參數;也可以用&來區分參數。)

$this->assign('outpager',$output);綁定頁面變量。

$("#pager a").click(function(){
var i=$("#pager a").index(this);
$("#pager a").eq(i).attr("href",$("#pager a").eq(i).attr("href")+"{$outpager}");
});前台修改連接地址,將參數加進來。

最近TP出2.1了,還沒去看,嘿嘿。感覺吧,有時候用這樣的框架,會不習慣,似乎就是少了一種感覺。用JQ也一樣,有時候就習慣性的$("form").submit();而其實頁面中就一兩處用到了JS,都沒把JQ加載進來;我都在想,會不會使用JQ,讓我把普通JS給忘了?這也許就是JQ的目標之一吧,哈哈。當然,作為開發者的話,不能只局限於一個框架,一種語言。

最近上班改ccmall.cn也糾結,常常就是本地改好了,上傳到服務器上,就沒用了;沒辦法,服務器我沒權限修改,我得將改好的往上傳,上面的人再修改服務器上的。咳。。

有時候在想,像ccmall.cn這樣的大型B2B,B2C網站,做成功了,每天至少是要經受上萬IP,數十萬次PV的,像這樣一個課題,弄到實際運用中去,會不會有問題?畢竟大學裡面的課題和實際運用的項目,差距是非常大的。還有,項目中,將大量的,本來最基本的html標簽,封裝成那麼復雜的服務端控件,生成大量的ViewState,然後修改的時候,就N麻煩。有必要麼?在修改的過程中,經常就發現,有時候,花大力氣寫的一個服務端控件,就一個地方用到了,要實現的功能,完全可以幾句很基本的JS和簡單的HTML標簽搞定。咳。。

看了看一些PHP項目,覺得還是那種簡單明了,簡潔,不臃腫。。微軟就喜歡把別人當傻瓜,什麼都封裝好。(這裡僅僅指asp.net)。當然了,也不是說asp.net一無是處哈,只是覺得,好多人都沒有正確的運用asp.net就是。其實,.net的強類型,編譯型,以及泛型,Ado.net等都是非常不錯的,還有後來推出的asp.net MVC,包括.net3.0之後推出來的一些新特性,像SQL CLR,這樣重邏輯的數據庫操作,還是挺實用的。

啰嗦了好多,只是好久沒寫了,嘿嘿。以上某些觀點只是個人的一些見解哈,如果你不認同,大可不必上勁哈,歡迎拍磚。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved