基于 PHP 和 JavaScript 的支持向导

标签 php javascript html css

我需要开发一个宽带支持向导。它需要是一个循序渐进的故障排除程序,因为不同的按钮会引导您走不同的“路径”来对用户进行故障排除。

我想知道最有效的方法是什么,因为现在我能想到的是一个带有 $steps 属性的类,如下所示:

private $steps = array(
    'start' => array( // this is the unique identifier for this step
        'text' => 'Is this a router problem or an exchange problem?' // the text for this step
        'buttons' => array( // holds the buttons which lead to the other steps
            array('text' => 'Router problem', 'goto' => 'router-problem'), // goto is the unique identifier for another step
            array('text' => 'Exchange problem', 'goto' => 'exchange-problem')
        )
    )
);

然后在页面上使用$steps制作元素,使用JavaScript跳过步骤。

虽然这看起来非常低效,但我想知道是否有最佳实践方法来做我想做的事情。本质上是一个树结构,用户可以沿着路径向下到达路径的尽头,希望它是解决方案。

谢谢!

最佳答案

首先,使用大型配置数组会严重阻碍您修改应用程序的能力。如果您需要更新配置数组或处理数组的方法,那么它们都可能需要更改并且需要大量测试(如果您没有单元测试设置)。

最好的办法是让一切都非常简单。将所有内容保留在 HTML 中,您的生活将会轻松得多。这不仅会更容易,而且应用程序也会运行得更快。如果您同意为每个步骤重新加载/重定向到一个新页面,那么请在一个 PHP 文件中定义每个步骤。因此,用户从 index.php 开始,然后根据他们单击的按钮转到新页面 step2.php。

如果您需要在不重新加载页面的情况下转到下一步,那么 AJAX 是您最好的 friend 。只需将新内容加载到主容器中,然后从那里继续。可以设置相同的树结构,如下所述。唯一的区别是每个按钮都是 AJAX 调用而不是重定向。这对于简单的疑难解答程序来说可能有些矫枉过正,但它看起来确实不错!

您已经声明您想要一个树结构。您可以设置自己的文件系统目录来帮助组织您的应用程序,强烈推荐这样做。这很简单,可以在 PHP 文件和重定向中完成。例如,如果用户在开始时遇到路由器问题,则您将用户重定向到 http://domain.com/router/index.php 使用路由器作为子目录。如果他们有特定的路由器问题,例如防火墙,您可以将用户重定向到 /router/firewall.php/router/firewall/index.php,具体取决于您对疑难解答的需求有多具体。您可以轻松地遵循一种结构思想并坚持使用它以简化导航。

此外,对于静态内容,数据库毫无意义且繁琐。如果这是一个高度动态的 Web 应用程序,那么它会非常有帮助,但任何静态的东西都不需要比 HTML 与 PHP 和 Javascript 多得多的东西。

最后但同样重要的是,我建议将所有常用页面内容放入包含文件中。将每个包含视为每个页面的模板。例如,可以使用 PHP 包含将主导航菜单添加到页面,因此只需更改一个文件即可在所有页面上对其进行更新。如果您这样做,那么静态页面而不是配置数组是可行的方法。

关于基于 PHP 和 JavaScript 的支持向导,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17412535/

相关文章:

php - 如何在提交按钮中显示不同颜色的文本

php - 在多维数组中的 php 中排序时忽略重音字符

javascript - 使用 php ajax jquery 从 mysql 发送或获取数据 - 什么是安全方法?

javascript - 双击打开链接

javascript - jQuery : drag and drop : find the class of the target and disable the drop

javascript - 在更改第一个选定项时显示第二个下拉菜单

php - 使用一个查询和一个 php 文件显示两个不同表中的图像

html - 我无法设置使用 Tailwind CSS 创建的仪表板的网格结构

html - 如何使这个箭头变圆?

javascript - 剑道网格 : How to sort (and filter) a column bound to a simple json object