Я изменяю компонент формы, который является частью веб-приложения, чтобы пользователи могли добавлять и удалять дополнительные поля формы во время выполнения.
Данные из формы устанавливаются в php-объект при отправке формы:
<?php
class users {
public function setName($name){
(...)
}
public function getName(){
(...)
}
public function setSomeAttribute($name){
(...)
}
public function getSomeAttribute(){
(...)
}
}
Форма формируется так:
$form = new Form();
$form->addField('Text', 'Name', (... some other parameters...))
->addField('Address', 'SomeAttribute', (... some other parameters...));
Генерируется представление, содержащее дерево объектов, представляющих каждое поле (некоторые «поля», такие как адреса, могут содержать дочерние поля, такие как ввод текста.
Учитывая, что мы знаем имя свойства объекта, компонент формы может затем легко связать результат этого поля формы с соответствующим свойством объекта, используя геттеры и сеттеры.
Проблема, с которой я сталкиваюсь сейчас, заключается в следующем: мне нужно разрешить пользователю добавлять поля во время выполнения. Это будет работать с использованием Jquery, а также резервным вариантом для пользователей без javascript.
Предположим, у нас есть страница, на которой пользователь может редактировать свой профиль и добавлять несколько адресов доставки. У него будет кнопка с надписью «добавить адрес». Нажатие этой кнопки сделает следующее:
- Для пользователей с включенным javascript пользователь сразу увидит новое «поле адреса», которое состоит из нескольких раскрывающихся списков и добавленных текстовых полей.
- Для пользователей без включенного javascript страница обновится и будет добавлено новое «поле адреса», состоящее из нескольких раскрывающихся списков и текстовых полей.
Каков наилучший способ сообщить стороне PHP, что эти новые поля существуют, и нам нужно получить от них опубликованные данные?