2011-03-11 33 views
0

这对我来说可能有点难以解释,但我仍会尝试。如何处理取决于URL参数的导航

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

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

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

我很奇怪,我可以为我的二级菜单做一个类。我会在tracker.header.php中创建此菜单对象,然后我可以在所有较低级别访问此对象变量,然后这些对象变得非常容易为每个追踪器定制。 将PHP中生成的所有HTML保存在变量中,然后仅在应用程序的最后几行中回显变量是否标准?

回答

0

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

在你的例子中,你可能有一个这样的URL:"./index.php?trk=1&prog=23&proj=12",你将不得不决定如果没有传递一个特定的参数应该怎么做。

将页面状态信息保存在session中也很常见。

0

我觉得有一个在您的文章两个问题,但我会尽我所能来回答他们:

如果需要沿着被埋其他类别内的类别传递,有几个方式去它比其他人容易一些。其中一种方法是在URL本身中附加浏览的类别链。例如,?trk=123&program=456&proj=789可能会缩减为?trk=123|456|789,其中脚本将每个管道字符拆分trk。如果结尾部分丢失,您可以假定它尚未设置。

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