[Devel-conf] alterator: удаление отмеченных объектов из таблицы
Stanislav Ievlev
=?iso-8859-1?q?stanislav=2Eievlev_=CE=C1_gmail=2Ecom?=
Чт Мар 20 14:35:44 MSK 2008
Я разобрался.
Дополнительный параметр, добавленный в поле action формы приезжает не
просто отдельно, он приходит в команде, предназначенной для всего
модуля, а не отдельной строки.
Тут вот какая проблема: динамическая таблица - это некий мозг,
обладающий любопытной фишкой: он на каждую строку таблицы умеет при
последующем submit сделать отдельную команду. Достигает он этого тем,
что при генерации таблицы особым образом подхакивает name у элементов
формы обнаруженных внутри таблицы. А значения всех полей вне таблицы
при этом же submit приезжают как обычно, для всей формы целиком.
Отсюда мораль - сейчас, алгоритм разделения пришедших к серверу
значений формы не может догадаться, что param3 относился не к общим
параметрам формы, а к каждой строчке таблицы. Знание об этом
нивелировал браузер пока формулировал ответ ;). action обрабатывается
особо - поэтому он и есть у каждой команды.
Чтобы какое-то значение приезжало для каждой строчки таблицы - можно
запинуть его в hidden в строке (соотв. он размножится на всю таблицу),
а можно закодировать в урле ибо если форма имеет урл "/a", в таблице
в optionlist сказано '/b' (суффикс который добавляется к a, чтобы
сделать woo-list), то на каждую строку будет приходить команда с урлом
/a/b/<name>. И этот 'b' можно использовать как 'параметр'.
Второй способ применяется в alterator-bind.
18.03.08, Vitaly Ostanin<vyt на altlinux.org> написал(а):
> Здравствуйте.
>
> Есть форма (в аттаче) с таблицей объектов. Пытаюсь сделать удаление
> отмеченных.
>
> Отладка показывает, что в бакенд отдаётся 3 action delete:
>
> amanda: params[action]: delete
> amanda: params[delete]: #t
> amanda: params[language]: ru_RU;en_US
> amanda: params[_objects]: DailySet1disklist/localhost/etc
> amanda: ==========: ==========
> amanda: params[action]: delete
> amanda: params[delete]: #t
> amanda: params[language]: ru_RU;en_US
> amanda: params[_objects]: DailySet1disklist/localhost/usr
> amanda: ==========: ==========
> amanda: params[action]: delete
> amanda: params[language]: ru_RU;en_US
> amanda: params[type]: disklist
> amanda: params[_objects]: DailySet1
>
> Почему params[type] передаётся только в последнем? По нему удобно
> различать delete для разных объектов.
>
> Как можно сделать явную передачу значений hostname и diskname в
> бакенд при удалении объекта? Эвристика с разбором _objects не нравится.
>
> alterator-3.1-alt6
> alterator-ahttpd-0.2-alt1
> alterator-fbi-0.16-alt3
>
>
> --
> Regards, Vyt
> mailto: vyt на altlinux.org
> JID: vitaly.ostanin на gmail.com
>
> <form method="POST" action="?action=delete&type=disklist" highlight-required="no">
> <h2><span translate="_">Add disk to backup list</span></h2>
> <table class="frame-table disklist">
> <thead>
> <tr>
> <th> </th>
> <th><label for="hostname">Host name</label></th>
> <th><label for="diskname">Disk</label></th>
> <th><label for="dumptype">Dump type</label></th>
> </tr>
> </thead>
> <tbody optionlist="disklist" class="alterator-list">
> <tr>
> <td><input type="checkbox" name="delete"/></td>
> <td nowrap="yes"><span class="alterator-label" name="hostname"></span></td>
> <td nowrap="yes"><span class="alterator-label" name="diskname"></span></td>
> <td nowrap="yes"><span class="alterator-label" name="dumptype"></span></td>
> </tr>
> </tbody>
> </table>
> <input type="submit" value="Remove selected" class="btn"/>
> </form>
>
> _______________________________________________
> devel-conf mailing list
> devel-conf на lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/devel-conf
>
>
Подробная информация о списке рассылки devel-conf