0 Пользователей и 1 Гость просматривают эту тему.
  • 21 Ответов
  • 1218 Просмотров
*

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
Здравствуйте!

Разрабатываю вид в компоненте, который представляет собой форму для внесения контакта: ФИО, телефон. Для вывода заполняемых полей использую файл формы (.xml). Бывает случай, когда одному человеку надо добавить более чем один телефон, и их число заранее неопределено.
Чтобы реализовать такую форму, надо писать свой java-скрипт, который будет по клику на какую-то кнопку "Добавить" вставлять в HTML код страницы поле ввода дополнительного телефона?
« Последнее редактирование: 21.10.2020, 15:28:59 от borro »
*

NewUsers

  • Живу я здесь
  • 2307
  • 215 / 0
  • +375 (25) 627-16-99 (WhatsApp, Telegram)
Re: Опциональное поле в форме
« Ответ #1 : 21.10.2020, 15:36:02 »
Чтобы реализовать такую форму, надо писать свой java-скрипт, который будет по клику на какую-то кнопку "Добавить" вставлять в HTML код страницы поле ввода дополнительного телефона?
Ну в принципе вы правильно мыслите! А в чем проблема?
Занимаюсь создание расширений для Joomla 3.10.x и 4.2.x | Доработка и настройка сайтов. Занимаюсь создание Интернет магазинов с нуля на собственном компоненте + оптимизация загрузки страницы (после предоставляю техподдержку).
Работа с DOM деревом на PHP
*

sivers

  • Живу я здесь
  • 2462
  • 335 / 0
Re: Опциональное поле в форме
« Ответ #2 : 21.10.2020, 15:43:57 »
Чтобы реализовать такую форму, надо писать свой java-скрипт, который будет по клику на какую-то кнопку "Добавить" вставлять в HTML код страницы поле ввода дополнительного телефона?
Можно свой, но не обязательно. Еще можно использовать стандартный вместе с полем типа subform и параметром repeatable. А можно разрешить добавление телефонов через запятую (если ваши юзеры смогут это понять).
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
Re: Опциональное поле в форме
« Ответ #3 : 21.10.2020, 15:52:40 »
Ну в принципе вы правильно мыслите! А в чем проблема?
Пока ни в чем, узнаю, как оно обычно делается. Всем спасибо
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Re: Опциональное поле в форме
« Ответ #4 : 22.10.2020, 13:37:25 »
subform решает подобное на раз-два.
Поиск subform field type
*

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
Re: Опциональное поле в форме
« Ответ #5 : 23.10.2020, 11:27:52 »
Здравствуйте!

Воспользовался я subform. Заметил странную некрасивую особенность: то, что прописано в атрибуте name такого поля, выводится над всей командой этих размножаемых сабформ и прямо на английском:

Это как-то в xml формы можно задать, чтобы не выводился этот атрибут?
Разобрался. Надо было проставить пустую строку в атрибут с названием label.
« Последнее редактирование: 23.10.2020, 14:50:59 от borro »
*

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
Re: Опциональное поле в форме
« Ответ #6 : 23.10.2020, 15:01:50 »
А у всех так отображается multiple поле - с двумя +?
*

sivers

  • Живу я здесь
  • 2462
  • 335 / 0
Re: Опциональное поле в форме
« Ответ #7 : 23.10.2020, 15:06:20 »
А у всех так отображается multiple поле - с двумя +?
Вроде да. Первый "+" для добавления в начало списка (или когда список пуст - он тогда один этот плюс). А второй относится уже к первому (и, видимо, единственному на скрине) элементу и добавляет новый элемент в список после текущего.
В настройках поля можно указать какие кнопки показывать или не показывать. Можно оставить только верхний плюс, а из каждой строки с телефоном убрать.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
Re: Опциональное поле в форме
« Ответ #8 : 23.10.2020, 16:33:36 »
Можно оставить только верхний плюс, а из каждой строки с телефоном убрать.
У меня для ситуации на скриншоте выше кнопки были прописаны только для subform поля(родительского), в дочерней XML атрибута buttons вообще нет, но кнопки плюс/минус отображаются у каждого дочернего поля. Пробовал удалять этот атрибут или оставлять пустым в родительском поле типа subform, но это тоже не помогло, верхний плюс всегда отображается.
Надо только верхний одинокий плюс убрать, либо оставить только минусы у отдельных дочерних размножаемых полей. Пока не получилось ни то, ни другое средствами самой xml. Кто-нибудь такое делал?
« Последнее редактирование: 23.10.2020, 16:44:36 от borro »
*

sivers

  • Живу я здесь
  • 2462
  • 335 / 0
Re: Опциональное поле в форме
« Ответ #9 : 23.10.2020, 20:11:31 »
Кто-нибудь такое делал?
Да. Попробуйте добавить атрибут buttons:
Код
<field type="subform" buttons="remove" ... >
_https://docs.joomla.org/Subform_form_field_type
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
Re: Опциональное поле в форме
« Ответ #10 : 26.10.2020, 08:56:43 »
Да. Попробуйте добавить атрибут buttons:
Код
<field type="subform" buttons="remove" ... >
_https://docs.joomla.org/Subform_form_field_type
Здравствуйте! Спасибо.
Другой вопрос по этой теме. У человека может быть несколько телефонов. Сможет ли функция заполнения данных формы loadFormData() заполнить все эти subform поля телефонами и как должны выбираться эти телефоны из БД: в виде одной строки с кучей колонок с телефонами или несколькими строками? Или для этой ситуации уже надо отказываться от формы и идти "в рукопашную" делать вывод?
« Последнее редактирование: 26.10.2020, 14:10:39 от borro »
*

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
Re: Опциональное поле в форме
« Ответ #11 : 26.10.2020, 09:37:04 »
и как должны выбираться эти телефоны из БД в виде одной строки с кучей колонок с телефонами или несколькими строками
Для SubForms - это Json string  - в DB - type Text

- В обще вся  SubForms - это как простое одно поле Texterra // - но перед вставкой данных - его парсят в массив объектов .
*

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
Re: Опциональное поле в форме
« Ответ #12 : 26.10.2020, 14:12:57 »
Для SubForms - это Json string  - в DB - type Text

- В обще вся  SubForms - это как простое одно поле Texterra // - но перед вставкой данных - его парсят в массив объектов .
Сложно вас понять, gartes. Может вы делали такое и можете выдрать пример кода, когда subform заполняется заранее неизвестным числом значений?
*

sivers

  • Живу я здесь
  • 2462
  • 335 / 0
Re: Опциональное поле в форме
« Ответ #13 : 26.10.2020, 16:21:13 »
Сложно вас понять, gartes
Тут точнее не опишешь. Получите значения поля и print_r-ните его - тогда понятней будет. В форму надо передать в таком же формате, чтоб все заполнилось.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
Re: Опциональное поле в форме
« Ответ #14 : 26.10.2020, 17:35:12 »
Тут точнее не опишешь.
- Простите - Но Вас поставили сюда подслушивать ! - А Вы подсматриваете ! ))))) - шутка !
Сложно вас понять, gartes. Может вы делали такое и можете выдрать пример кода, когда subform заполняется заранее неизвестным числом значений?
Когда subform - Что делает?  заполняется ? - ))) -
ну первое - не известным количеством значений - Если вы читали Доку по subform - то должны были заметить
Код
default (optional) is the default value, JSON string.


В форму надо передать в таком же формате, чтоб все заполнилось.

Что бы передать - то еще раз то же что и текст только Json!
*

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
Re: Опциональное поле в форме
« Ответ #15 : 21.11.2020, 13:43:18 »
Тут точнее не опишешь. Получите значения поля и print_r-ните его - тогда понятней будет. В форму надо передать в таком же формате, чтоб все заполнилось.
Здравствуйте!

Дошел вот до чего: вижу, что производится попытка отобразить JSON значение в рамках поля subform, а именно количество дочерних input элементов такое же, сколько телефонов хранится в базе данных(в БД они хранятся в одной колонке таблицы в виде строк '[ "+79881111111", "+79881111112", "+79881113112"]'). Вот только эти дочерние subform поля пустые, без значений.
Чего не хватает CMS, чтобы еще и значения вставить в subform поля?
Вот файл модели вида:
Спойлер
[свернуть]
*

sivers

  • Живу я здесь
  • 2462
  • 335 / 0
Re: Опциональное поле в форме
« Ответ #16 : 21.11.2020, 15:43:07 »
Чего не хватает CMS, чтобы еще и значения вставить в subform поля?
Там формат значения другой должен быть. Двумерный массив. Первый уровень - отдельные строки, второй уровень - элементы в строке. Если у вас в строке только одно поле телефона, то значение должно быть вроде такого:
[[ "+79881111111"], ["+79881111112"], ["+79881113112"]]
Посмотрите в каком формате приходят данные из формы и потом передавайте в таком же.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
Re: Опциональное поле в форме
« Ответ #17 : 21.11.2020, 17:46:40 »
Посмотрите в каком формате приходят данные из формы и потом передавайте в таком же.
Посмотрел, но там, совсем не в виде строки. Я не там смотрю?
*

sivers

  • Живу я здесь
  • 2462
  • 335 / 0
Re: Опциональное поле в форме
« Ответ #18 : 22.11.2020, 15:09:49 »
Посмотрел, но там, совсем не в виде строки. Я не там смотрю?
Там-там. Это массив:
phones - имя субформы
phonesX - имя (с номером) строки субформы
phone - имя поля в строке субформы и его значение.
Субформа - это ж одно поле. А значит значением его должен быть массив. Перед сохранением он преобразуется в json-строку.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Re: Опциональное поле в форме
« Ответ #19 : 25.12.2020, 21:09:31 »
как писал gartes про типы полей в БД и прочее
добавлю вот такое я ставлю в метод save и больше ничего не делаю
Код
if (is_array($data['service_data_subform'])) { //Проверка - надо ли сводить
            $data['service_data_subform'] = json_encode($data['service_data_subform']); // Сводим данные subform для сохранения.
        }

Загрузка в форму происходит по умолчанию
*

borro

  • Завсегдатай
  • 1379
  • 22 / 0
  • желаю вам счастья
Re: Опциональное поле в форме
« Ответ #20 : 27.12.2020, 21:03:14 »
Спасибо, platonische, помогло! В базе данных к значениям добавились слова, зависящие от названия subform-поля.
Хочу выводить эти значения в читабельном формате через запятую(без кнопок, в одном поле). В Joomla есть функции, которые бы очистили данные от ненужных слов(пример на рисунке)? json_decode? :)
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Re: Опциональное поле в форме
« Ответ #21 : 28.12.2020, 12:16:13 »
да json_decode или JRegistry преобразуют данную строку в массив и объект соответственно. Выбирайте что удобнее. А дальше формируйте как вам угодно
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как написать сложное кастомное поле?

Автор Gover

Ответов: 1
Просмотров: 677
Последний ответ 11.07.2018, 00:14:34
от fsv
Если нужно добавить поле в subform repeatable своим ява скриптом - как сделать?

Автор Progreccor

Ответов: 7
Просмотров: 868
Последний ответ 03.04.2018, 16:03:54
от Progreccor
Поле для прикрепления файлов в администраторе

Автор Joker_V

Ответов: 1
Просмотров: 1004
Последний ответ 09.04.2016, 21:17:02
от Joker_V
Добавляю поле Featured в компоненте

Автор platonische

Ответов: 6
Просмотров: 1143
Последний ответ 21.10.2015, 18:06:48
от Aleks.Denezh
[ РЕШЕНО ] Добавляем свое поле

Автор platonische

Ответов: 1
Просмотров: 872
Последний ответ 20.10.2015, 18:34:05
от platonische