Подскажите, как организован порядок (получения внутри Парсера) полей для $form:fields.
Например, тело запроса выглядит как:
proceed=1&list_133=1&list_0=18&list_134=2
,
по идее, ^form:fields.foreach должен возвратить их в таком же порядке, т. е. proceed, list_133, list_0, list_134, а на деле возвращается list_0, proceed, list_133, list_134.
Разве нет варианта чтобы получить их в порядке тела запроса, кроме как вручную разбивать в таблицу тело запроса по разделителю и потом разбирать через меню?
Есть некие абстрактные поля. Имена полей вида abstract_17238, где 17238 -- идентификатор в базе.
Порядок в базе определяется не идентификатором (автоинкрементным), а полем sort_order, например.
В форме с помощью javascript происходит модификация полей, какие-то из них удаляются, добавляются новые (между ними, перед или после них). Для новых полей создаются имена вида abstract_0 + случайное число (чтобы таблицы не было из них).
Так как у нас в базе данных для автоинкрементных полей не предусмотрено нулей впереди, все такие поля считаются новыми (добавляются). Другие -- обновляются (если пришли с формы, те что не пришли - удаляются).
Вот тут самое интересное. Думал, что для ^form:fields.foreach будет порядок полученный из тела запроса -- тогда не вопрос.
А нет, батенька, не выйдет. Или запроса разбирать или в js синхронизировать (не вопрос).
И все равно не увидел причины строгой последовательности
if вам в помощь у меня примерно такой же вопрос - приходят переменные с динамическими именами - все чудесно обрабатывается - если надо могу кинуть кусок кода или логику (личка), но по сути этот вопрос у меня вообще не вызвал затруднений.
Самое главное группировка обьектов и ключи к группам(набор полей обьекта обьеденные одним идентификатором (инкремент)) и типам групп(новые, редактируемые, удаленные - три отдельных списка в скрытых полях). В общем как-то так.
Парсер получает поля в том порядке, который выдает веб-сервер...
... при этом протокол HTTP не настаивает на некотором "правильном" порядке следования данных (более того - предполагается, что параметры могут следовать в любом порядке). Соответственно требовать от Парсера некоторого "порядка" следования полей не стоит и алгоритм перебора параметров надо строить так, чтобы он не зависел от этого порядка. Кроме того, надо помнить, что поддержка порядка следования элементов в хеше появилась в Парсере только с версии 3.4.0.
я бы не стал рассчитывать на порядок полей в запросе
т.к. это не гарантирует работоспособность, и решается добавлением ещё одного поля, в котором списком передаётся корректная последовательность полей (например: "abstract_0111,abstract_17238,abstract_0222")