2009-04-21 80 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做复杂的事情,至少不是我最后一次检查。