如何处理依赖于URL参数的导航

时间:2011-03-11 16:14:17

标签: php url menu navigation parameter-passing

这对我来说可能有点难以解释,但无论如何我都会尝试。

在我的PHP应用程序中,我有一个主导航,导致不同的“跟踪器”,例如,我在URL的末尾添加参数“?trk = 1”。

我有一个辅助导航,我需要为系统中的不同“跟踪器”添加不同的导航。从主跟踪器页面,我可以轻松获取“trk”参数的ID,并基于此创建辅助导航。但是,我的应用程序在“跟踪器”级别下面有许多子页面。例如,每个Tracker都有程序,程序中有项目等等。

我正在考虑的解决方案之一是将“trk”参数传递到我的所有页面。这样,我的tracker.header.php文件(在我的应用程序中跟踪器级别以下的所有级别运行)都可以为每个跟踪器正确生成自定义辅助导航。

我有点想我可以为我的二级菜单上课。我将在tracker.header.php中创建这个菜单对象,然后我可以在所有较低级别访问此对象变量,这样每个跟踪器就可以很容易地进行自定义。 标准是将PHP中生成的所有HTML保存在变量中,然后只回显应用程序最后几行中的变量吗?

2 个答案:

答案 0 :(得分:0)

是的,拥有单个条目页面(index.php)是相当标准的,所有被调用的页面只是index.php,参数可以是GETPOST。许多人也使用apache重写来隐藏他们正在这样做的事实。

在您的示例中,您可能有一个这样的URL:"./index.php?trk=1&prog=23&proj=12",您必须决定在未传递特定参数的情况下该怎么做。

将页面状态信息保存在session

中也很常见

答案 1 :(得分:0)

我认为你的帖子中有两个问题,但我会尽力回答:

如果您需要传递隐藏在其他类别中的类别,有几种方法可以解决,有些方法比其他类别更容易。一种这样的方法是附加在URL本身中浏览的类别链。例如,?trk=123&program=456&proj=789可以缩减为?trk=123|456|789,其中脚本会分割trk每个管道字符。如果缺少结束部分,您可以假设它尚未设置。

此外,通常的做法是在生成页面时输出页面,通常使用echo或通过转义静态HTML的PHP​​标记。如果您要发送一个大页面(例如中间有大量表数据的页面),那么等到页面完全生成可能会导致某些浏览器认为服务器已停止响应。此外,在这种情况下,建议以某种方式使网页的巨大中段部分异步,以便用户不会感到不耐烦。