【问题标题】:How to handle a navigation that depends on URL parameters如何处理依赖于 URL 参数的导航
【发布时间】:2011-03-11 16:14:17
【问题描述】:

这对我来说可能有点难以解释,但我还是会尝试。

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

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

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

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

【问题讨论】:

    标签: php url menu navigation parameter-passing


    【解决方案1】:

    是的,有一个入口页面 (index.php) 是相当标准的,所有调用的页面都只是 index.php,参数通过GETPOST 进行。许多人还使用 apache 重写来隐藏他们正在这样做的事实。

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多