[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&amp;type=disklist" highlight-required="no">
>     <h2><span translate="_">Add disk to backup list</span></h2>
>       <table class="frame-table disklist">
>         <thead>
>           <tr>
>             <th>&nbsp;</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