2009-04-21 81 views
0

當調用控制器的init方法如下類型的網址,我得到兩個不同的服務器上的兩個不同的結果:URL不表現爲預期Zend框架

http://address.com/index/action/?start=2009-04-18&end=2009-04-21

調用

echo $ _GET ['start'];

給我2009-04-18在一臺服務器上,而在另一臺服務器上什麼都沒有。

然而,這是奇怪的部分,加入

出口();

之後,echo語句導致2009-04-18在兩臺服務器上按預期顯示。

僅供參考請求params顯示它們在一臺服務器上可用,但不在另一臺服務器上可用...除非您調用exit();

世界上可能造成這種情況的是什麼?我意識到這不是在ZF中構建URL的方式,但它是在特定項目中完成的方式。也許某種自定義路線會有所幫助? STill沒有解釋exit();位導致$ _GET變量顯示。

編輯:爲了解決這個問題,我現在寫了一個自定義路線,但是?在網頁中混亂了事情。通過包含它,似乎GET變量被強制並覆蓋了我的自定義路由。離開它,一切工作正常在我創建的路線,但我沒有選擇刪除?任何人都知道如何使自定義路線優先於當被填充的GET變量?在那裏?

回答

1

我的猜測是$ _GET ['start']實際上是在兩個服務器上工作,問題是沒有顯示任何問題後,這個語句沒有問題,但回聲的輸出仍然在輸出緩衝區。如果你在echo之後執行了flush(),你應該能夠看到輸出,然後無論後綴是否會崩潰,但你會看到日期。

我不確定你在做什麼路由(沒有足夠的代碼看),但你的查詢字符串(後面的所有內容)與你的路由完全不同。如果您要使用路由,您需要使用ZF Quickstart頁面上提供的.htaccess文件來啓用mod_rewrite。

我想你會想製作你自己的自定義路由器(不只是一個路由),然後使用$ _GET參數來路由到你想要的控制器,以及它需要的參數。默認路由器不會用QueryString做複雜的事情,至少不是我最後一次檢查。