在Expression Engine 2中支持带有GET参数(查询字符串)的URL?

Mar*_*ean 3 html php forms expressionengine

我正在开发一个具有搜索工具的Expression Engine附加组件.

对于过去的搜索表单,我使用了标准HTML <form>,其method属性设置为GET,然后服务器端我将这些GET变量解析WHERE为数据库查询的某种形式的条件.

我正在尝试在Expression Engine附加组件中实现此逻辑,但似乎Expression Engine不喜欢带有查询字符串的URL,因为当我提交表单时,页面中断(它会引发404错误).

Expression Engine是否支持带有查询字符串的URL?或者这是否打破了内部路由?

我还应该提一下,这个附加组件将在许多站点上实现(数量未知),如果可能的话,我不想对Expression Engine核心文件(即PHP脚本)进行任何更改,以防万一有人建议.

提前致谢.

编辑:我想我会补充一些关于我想要实现的目标的澄清.

在过去,我使用$_GET变量来驱动搜索表单.所以我可能有一个像这样的URL:

http://example.com/search.php?size=large&color=red&page=1

如您所见,我的查询字符串包含名称和值对作为参数(包括一个用于page),这些将使用其action属性设置为的表单创建GET.

如果存在$_GET参数,那么search.php将解析它,将它们表达为SQL或XPATH查询或其他任何内容; 然后返回匹配的记录.然后,用户可以通过更新pageURL中存在的参数来翻阅这些记录; 查询将仅返回结果集的另一部分,因为其他GET参数仍将在URL中.

我想用Expression Engine附加组件实现相同的功能.我想要一个采用用户提交的标准的表单,然后返回一个可分页的记录集.我认为使用查询字符串将是最好的选择,因为它是RESTful和诸如此类的,但是前面提到的表达引擎不喜欢URL中存在的查询字符串,将其视为不同的URL并抛出404错误.

如何创建生成表单的加载项,然后使用提交的用户查询数据库表,并将结果返回给用户,然后也可以将页面?

adr*_*nne 5

请注意,虽然它不是插件的主要用途,但BoldMinded的SuperGlobals允许您通过{get:MYVAR}{post:MYVAR}关键字直接在模板中访问GET和POST变量.这是非常方便的功能,我已经多次使用它来搜索结果等.与SuperSearch一起使用,这是构建EE搜索的一种非常合理的方式.

允许访问GET和POST变量的另一个插件是Rob Sanchez的Mo'变量,它是免费的.它使用相同{get:MYVAR}{post:MYVAR}语法.

需要注意的是,如果您的主机是廉价共享主机之一,您必须强制查询字符串才能使EE工作,那么GET参数是一个坏主意.所以要确保你有一个体面的网络主机.:)