【发布时间】:2011-10-18 10:20:52
【问题描述】:
我正在为具有搜索功能的表达式引擎开发一个插件。
对于过去的搜索表单,我使用标准 HTML <form> 并将其 method 属性设置为 GET,然后在服务器端我会将这个 GET 变量解析为某种形式WHERE 数据库查询条件。
我正在尝试在表达式引擎插件中实现此逻辑,但表达式引擎似乎不喜欢带有查询字符串的 URL,因为当我提交表单时分页符(它会引发 404 错误)。
表达式引擎是否支持带有查询字符串的 URL?还是这会破坏内部路由?
我还应该提到,这个附加组件将在许多站点(数量未知)上实现,如果可能的话,我想远离对 Expression Engine 核心文件(即 PHP 脚本)进行任何更改,只是以防有人建议。
提前致谢。
编辑:我想我会澄清一下我想要实现的目标。
过去,我使用$_GET 变量来驱动搜索表单。所以我可能有一个类似的网址:
如您所见,我的查询字符串包含名称和值对作为参数(包括用于page 的参数),这些将使用action 属性设置为GET 的表单创建。
如果存在$_GET 参数,那么search.php 将解析它,将它们表述为SQL 或XPATH 查询或其他;然后返回匹配的记录。然后,用户可以通过更新 URL 中的 page 参数来翻阅这些记录;该查询将仅返回结果集的另一部分,因为其他 GET 参数仍将在 URL 中。
我想通过表达式引擎插件来实现同样的效果。我想要一个表单,它采用用户提交的标准,然后返回一个可分页的记录集。我认为使用查询字符串将是最好的选择,因为它是 RESTful 和诸如此类的,但如前所述,表达式引擎不喜欢 URL 中存在查询字符串,将其视为不同的 URL 并引发 404 错误。
如何创建生成表单的插件,然后使用提交的用户查询数据库表,并将结果返回给用户,然后也可以是页面?
【问题讨论】:
标签: php html forms expressionengine