Я разобрался.

Дополнительный параметр, добавленный в поле action формы приезжает не
просто отдельно, он приходит в команде, предназначенной для всего
модуля, а не отдельной строки.

Тут вот какая проблема: динамическая таблица - это некий мозг,
обладающий любопытной фишкой: он на каждую строку таблицы умеет при
последующем submit сделать отдельную команду. Достигает он этого тем,
что при генерации таблицы особым образом подхакивает name у элементов
формы обнаруженных внутри таблицы. А значения всех полей вне таблицы
при этом же submit приезжают как обычно, для всей формы целиком.
Отсюда мораль - сейчас, алгоритм разделения пришедших к серверу
значений формы не может догадаться, что param3 относился не к общим
параметрам формы, а к каждой строчке таблицы. Знание об этом
нивелировал браузер пока формулировал ответ ;). action обрабатывается
особо - поэтому он и есть у каждой команды.

Чтобы какое-то значение приезжало для каждой строчки таблицы - можно
запинуть его в hidden в строке (соотв. он размножится на всю таблицу),
 а можно закодировать в урле ибо если форма имеет урл "/a", в таблице
в optionlist сказано '/b' (суффикс который добавляется к a, чтобы
сделать woo-list), то на каждую строку будет приходить команда с урлом
/a/b/<name>. И этот 'b' можно использовать как 'параметр'.
Второй способ применяется в alterator-bind.


18.03.08, Vitaly Ostanin<[EMAIL PROTECTED]> написал(а):
> Здравствуйте.
>
>  Есть форма (в аттаче) с таблицей объектов. Пытаюсь сделать удаление
>  отмеченных.
>
>  Отладка показывает, что в бакенд отдаётся 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:  [EMAIL PROTECTED]
>  JID:     [EMAIL PROTECTED]
>
>     <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
>  [email protected]
>  https://lists.altlinux.org/mailman/listinfo/devel-conf
>
>
_______________________________________________
devel-conf mailing list
[email protected]
https://lists.altlinux.org/mailman/listinfo/devel-conf

Ответить