Сортировка документов Ditto и экстендер request
Вы наверняка встречались в интернете с возможностью сортировать документы по каким-либо параметрам, например, по цене или названию и выбирать направление сортировки по возрастанию или убыванию. Встречаются и более сложные формы, например, на сайтах недвижимости, где параметров для выбора нужных документов может быть гораздо больше.
Созданы такие формы с момощью тега <form>, который и устанавливает форму на веб-странице. Форма предназначена для обмена данными между пользователем и сервером. Для отправки данных формы на сервер используется кнопка Submit, но если используется одно поле, можно отправлять данные клавишей Enter или с помощью специального события, например onchange="this.form.submit();"
Когда форма отправляется на сервер, управление данными передается программе, заданной атрибутом action тега <form>. Предварительно браузер подготавливает информацию в виде пары «имя=значение», где имя определяется атрибутом name элементов формы, а значение введено пользователем или установлено в поле формы по умолчанию.
Для тех, кто только начинает изучать HTML, это может показаться сложным, но на самом деле все просто, главное понять принцип передачи и обработки этих данных. Примеры ниже помогут вам понять этот механизм.
Сортировать документы мы будем с помощью сниппета Ditto. Для того, чтобы сниппет умел понимать данные, передаваемые формой, мы воспользуемся специальным экстендером request, который находится здесь: assets/snippets/ditto/extenders/request.extender.inc.php. Все имена параметров, передаваемых формой для обработки сниппетом Ditto, должны начинаться с префикса «ditto_», если в вызове сниппета используется уникальный идентификатор, то он добавляется к этому префиксу: «ditto_id_», а далее уже идет имя передаваемого параметра, например, так: «ditto_id1_sortDir». Значение параметра указывается после знака равно: «ditto_id1_sortDir=ASC». Другими словами, если наша форма отправит данные в таком виде, то сниппет Ditto, при помощи экстендера request, получит и обработает эти данные.
Существует два метода обработки данных формы, которые мы и рассмотрим ниже.
Вместо заключения
Данные примеры не охватывают все возможные варианты применения форм и предназначены только для облегчения знакомства с методами GET и POST и экстендером request для Ditto.
Примечание
На одном из форумов встретил ссылку на эту статью, где автор топика пишет, что не может понять, что это за @CODE, который я указываю в вызове сниппета. @CODE служит для того, чтобы размещать код шаблона непосредственно в параметре, не создавая чанков. Но имейте ввиду, что если у вас на сайте используется PHx, то он будет вырезать из этого кода плейсхолдеры.