Создание неограниченного количества значений кастомных полей пользователем на фронте
Приветствую, уважаемое сообщество!
Есть такая задача: необходимо дать возможность юзерам в личном кабинете создавать в своем профиле неограниченное количество адресов (или других полей, к примеру, бывшие места работы, тут не принципиально).
В принципе, через родной функционал UpdateProfile и связанных сниппетов получается создавать нужные данные при помощи такой формы:
Есть такая задача: необходимо дать возможность юзерам в личном кабинете создавать в своем профиле неограниченное количество адресов (или других полей, к примеру, бывшие места работы, тут не принципиально).
В принципе, через родной функционал UpdateProfile и связанных сниппетов получается создавать нужные данные при помощи такой формы:
<fieldset id = "addr_1" class = "addr_set" data-empty = "[[!+address_1.region]]">
<legend>Адрес 1</legend>
<label for = "region_1">Регион:</label>
<span class="error">[[+error.address_1.region]]</span>
<input type="text" name="address_1[region]" id="region_1" value="[[!+address_1.region]]" />
<label for = "city_1">Город:</label>
<span class="error">[[+error.address_1.city]]</span>
<input type="text" name="address_1[city]" id="city_1" value="[[!+address_1.city]]"/>
<label for = "address_1">Адрес:</label>
<span class="error">[[+error.address_1.addres]]</span>
<input type="text" name="address_1[address]" id="address_1" value="[[!+address_1.address]]" />
<a href = "#" onclick="event.preventDefault()" class = "address_add_btn" data-id = "addr_2">Добавить ещё адрес</a>
</fieldset>
Однако, встаёт вопрос, как дать возможность пользователю создавать неограниченное количество значений для этого поля. Буду благодарен за наводки, быть может, какие-то готовые или схожие решения имеются. Комментарии: 9
Первое что приходит это скриптом по нажатию + добавлять поле. Они будут в массиве и этот массив в поле extended юзера. Ну как вариант
Ну да, это, вроде очевидная реализация.
Вполне можно через JS создавать сколько угодно полей вида:
Вопрос тогда становится такой: каким образом потом на этой же странице вывести список всех кастомных полей, чтобы из можно было редактировать? Ведь для этого еще необходимо поставлять плейсхолдеры вида [[!+address_1.address]] в поле value.
Вполне можно через JS создавать сколько угодно полей вида:
<input type="text" name="address_1[region]" id="region_1" value="" />
просто подменяя суффикс с порядковым номером.Вопрос тогда становится такой: каким образом потом на этой же странице вывести список всех кастомных полей, чтобы из можно было редактировать? Ведь для этого еще необходимо поставлять плейсхолдеры вида [[!+address_1.address]] в поле value.
ну при разборе можно просто вывести поля с именами. Office кажется может из extended выводить сразу
ну при разборе можно просто вывести поля с именами.Как именно вывести, не подскажете, что имеете в виду?
В документации Office написано такое:
Контроллер позволяет редактировать расширенные поля профиля пользователя, типа extended.some_field. Для этого вам нужно:То есть в форме все равно придётся руками выводить поля (инпуты) с плейсхолдерами. Как вывести инпуты для редактирования всех существующих полей — вот в чем вопрос :)
Вывести их в форме
<label for="extended.some_field">Какое-то поле</label> <input name="extended[some_field]" value="[[+extended.some_field]]" id="extended.some_field">
ну не надо руками, можно неогрниченно вводить и скриптом. Он автоматически может их выводить в редактировании
Спасибо, посмотрю.
Мысль ещё пришла такая: есть обычный сниппет Profile в составе пакета Login. Он может вывести JSON-массив всех полей, плейсхолдер extended. В принципе, можно создать простой сниппет, который получит этот массив, обработает его и выведет формы по шаблону.
Мысль ещё пришла такая: есть обычный сниппет Profile в составе пакета Login. Он может вывести JSON-массив всех полей, плейсхолдер extended. В принципе, можно создать простой сниппет, который получит этот массив, обработает его и выведет формы по шаблону.
Да, просто сниппетом выводить формы. Возможно, за основу можно взять сниппет отсюда: https://ilyaut.ru/tips-and-tricks/process-form-fields-added-dynamically/
Спасибо, Илья, полезно.
Как и вообще ваш сайт, нередко выручал :)
Как и вообще ваш сайт, нередко выручал :)
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.