Я разрабатываю дополнение для 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 или что-то еще; а затем вернуть соответствующие записи. Затем пользователь может пролистать эти записи, обновив параметр page
, присутствующий в URL; запрос вернет просто еще одну часть результирующего набора, так как остальные параметры GET
все еще будут в URL.
Я хочу добиться того же с помощью дополнения Expression Engine. Я хочу форму, которая принимает критерии, представленные пользователем, а затем возвращает набор записей, который можно просматривать на странице. Я подумал, что использование строки запроса будет лучшим вариантом, учитывая, что она является RESTful и так далее, но, как уже упоминалось, Механизм выражений не любил строку запроса, присутствующую в URL, рассматривал ее как другой URL и выдавал ошибку 404.
Как создать надстройку, которая генерирует форму, отправленный пользователь затем используется для запроса таблицы базы данных, а результаты возвращаются пользователю, который также может быть страницей?