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

asuran

  • Новичок
  • 5
  • 0 / 0
Здравствуйте!

Стоит задача сделать форму для регистрации большого количество людей. По моей задумке выглядеть это должно примерно так https://jsfiddle.net/asuran/kec8ag7d/embedded/result/
Для каждого человека несколько полей, есть кнопка для добавления новой строки. Регистрируется сразу несколько групп и все это потом отправляется. Данные из разных частей формы (делегации, участники и т.п.) могут попадать в разные таблицы БД. Также должна быть возможность потом открыть эту форму для редактирования.

Я сейчас умею создавать только простые формы - 1 контроллер, 1 модель, 1 таблица, 1 форма. Примерно понимаю как отправлять данные больше чем в одну таблицу из одной модели. Здесь как я понимаю нужно или как-то хитро составлять файл формы или выводить на страницу сразу несколько форм.

Подскажите, пожалуйста, как лучше запрогать требуемую форму, максимально используя api Joomla. Какие классы/функции использовать, какие переопределить?  ^-^
*

SeBun

  • BanMaster
  • 4015
  • 259 / 5
  • @SeBun48
Это даже не совет, это мое видение организации. Я бы сделал на манер журнала с листами. Пусть журнал - сама форма, страницы - поля формы. Работа формы обслуживается аяксом. В приведенном вами примере три группы, но их может быть больше. А сколько участников? Человек 20, 40? Поэтому я бы сделал одну форму и одну доп. таблицу в базе. Смотрите, как работает: вы открываете страницу, у вас только одна форма. Начинаете формировать группу, выбираете через select "лидеры", "сопровождающие", "участники" и т.д., эти данные могут быть заранее заданы в админке. Далее заполняете стандартные для всех поля, например ФИО, можете добавить доп. поля (пол, наличие собаки), и нажимаете добавить. Происходит аякс-запрос. Данные уходят в таблицу временных данных в базу, форма обновляется. Вы видите некую информацию, например "Участники: 1 чел", и чистые поля формы. Добавляете таким же образом следующего. Как только будет сформирована группа, нажимаете "Зарегистрировать" к примеру. И данные из временной таблицы переносятся в таблицу групп. Можно писать и не во временную, а сразу в основную, добавив, к примеру, какой то идентификатор, что бы знать, что группа не сформирована/сформирована. Как то так... По аналогии с журналом вы заполняете его страницы, а потом ложите журнал в шкаф.

По поводу организации таблиц в БД: вам потребуется таблица групп, таблица ролей ("лидеры", "сопровождающие", "участники"), таблица участников. Участники имеют роли и принадлежат группе. Группа имеет название или просто номер (тот же id).

Приведенный вами пример хорош, но когда вы его начнете заполнять, получится огромная форма с большим объемом отправляемых данных. А если ошибка? Забили человек 40, а потом сбой, и сидите забиваете по новому...

ИМХО  ::)
« Последнее редактирование: 07.05.2015, 09:28:40 от sebun »
Оказываю услуги по Joomla | Миграция/Обновление | Сопровождение | IT-аутсорсинг | Недорогие домены и хостинг
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Я сейчас умею создавать только простые формы - 1 контроллер, 1 модель, 1 таблица, 1 форма. Примерно понимаю как отправлять данные больше чем в одну таблицу из одной модели. Здесь как я понимаю нужно или как-то хитро составлять файл формы или выводить на страницу сразу несколько форм.
Вам не особо поможет JForm ибо она заточена под работу с одной записью!
На самом деле такая форма делается очень просто, вы можете динамично добавлять поля в нужном вам количестве через JS!
Но потом вам нужно будет их обработать в цикле!
А дальше уже решать что нужно вам делать!
+ Судя по вашему функционалу вы уверенны что вам нужно создавать пользователей? Пользователи будут заходить в какие то разделы под своим логином и паролем, и после что то  редактировать/изменять/создавать? Если нет то вам не нужно все это делать! Ибо в той форме что вы показали нет ввода логина для юзера или пароля!
+ нужна будет сводная таблица в которой вы будете писать нестандартные поля типа "дата рождения", "номер паспорта", "фото" и т.д.

Происходит аякс-запрос. Данные уходят в таблицу временных данных в базу, форма обновляется.
Происходит эпик фейл ) Ибо файлы аяксом не отправляются )))
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Ибо файлы аяксом не отправляются )))
Почему нет? Есть же FormData().
Другое дело, целесообразно ли использовать AJAX?
Не будь паразитом, сделай что-нибудь самостоятельно!
*

SeBun

  • BanMaster
  • 4015
  • 259 / 5
  • @SeBun48
Другое дело, целесообразно ли использовать AJAX?
В принципе да, можно отправлять каждого участника в таблицу, пока не наберется группа. Потом регистрировать группу. Как я и писал, только без аякса.
Оказываю услуги по Joomla | Миграция/Обновление | Сопровождение | IT-аутсорсинг | Недорогие домены и хостинг
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Другое дело, целесообразно ли использовать AJAX?
не есть небольшая целесообразность ) Во первых не будет перезагрузки, во вторых если ошибка вдруг в введенных данных - не надо будет заботится о валидации и новой вставке их по полям после перезагрузки )

Почему нет? Есть же FormData().
Честно говоря первый раз слышу о FormData, и как раз тут пишу AJAX форму, в которой мне нужно отправлять файл ) Думаю пригодится )
« Последнее редактирование: 07.05.2015, 11:48:43 от Istaan »
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Писал уже неоднократно, гемор конечно. У formdata проблема с кроссбраузерностью, ie до 10 версии не поддерживает вообще (это вобще html5 приблуда). Но есть еще много плагинов кроссбраузерных вроде plupload, я бы советовал их юзать.
интернет-блог: http://websiteprog.ru
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Писал уже неоднократно, гемор конечно. У formdata проблема с кроссбраузерностью, ie до 10 версии не поддерживает вообще (это вобще html5 приблуда). Но есть еще много плагинов кроссбраузерных вроде plupload, я бы советовал их юзать.
Вот где собака зарыта ) Да пофиг! кто сейчас тот IE юзает ))
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Корпоративный сектор юзает. Причем во многих конторах есть даже правило использовать только ie, и юзеры не могут себе ничего другого поставить. Там просто интеграция с AD и групповыми политиками домена в ie. А так да, для обычного сайта можно и забить на него.
интернет-блог: http://websiteprog.ru
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
кто сейчас тот IE юзает ))
Вот я тоже так думал.
Недавно прикрутил форму добавления видео и pdf-файлов к VM 1.0 на Joostina(!) :o, с использованием JS, конечно. Все проверял, причесал, а заказчик говорит: не работает. Оказалось, что у него IE, и ни на что другое не согласится поменять :(.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Да сроки сжатые делаю пока как быстро ) а быстро через FormData ) если к ИЕ придолбутся, допилю )
*

asuran

  • Новичок
  • 5
  • 0 / 0
Всем спасибо за ответы! Не ожидал, что развернется такая дискуссия)

Вам не особо поможет JForm ибо она заточена под работу с одной записью!
Т.е. вы предлагаете полностью отказаться от JForm и собирать форму, грубо говоря, в HTML?
Правильно ли я понимаю, что без JForm, то станет невозможно работать через JControllerForm и JModelForm/JModelAdmin? До этого я использовал именно через них.

+ Судя по вашему функционалу вы уверенны что вам нужно создавать пользователей? Пользователи будут заходить в какие то разделы под своим логином и паролем, и после что то  редактировать/изменять/создавать? Если нет то вам не нужно все это делать! Ибо в той форме что вы показали нет ввода логина для юзера или пароля!

Совершенно верно: пользователи сначала проходят авторизацию и получают доступ к форме. Позже они могу внести в эту форму изменения.

Это даже не совет, это мое видение организации. Я бы сделал на манер журнала с листами. Пусть журнал - сама форма, страницы - поля формы. Работа формы обслуживается аяксом. В приведенном вами примере три группы, но их может быть больше. А сколько участников? Человек 20, 40? Поэтому я бы сделал одну форму и одну доп. таблицу в базе. Смотрите, как работает: вы открываете страницу, у вас только одна форма. Начинаете формировать группу, выбираете через select "лидеры", "сопровождающие", "участники" и т.д., эти данные могут быть заранее заданы в админке. Далее заполняете стандартные для всех поля, например ФИО, можете добавить доп. поля (пол, наличие собаки), и нажимаете добавить. Происходит аякс-запрос. Данные уходят в таблицу временных данных в базу, форма обновляется. Вы видите некую информацию, например "Участники: 1 чел", и чистые поля формы. Добавляете таким же образом следующего. Как только будет сформирована группа, нажимаете "Зарегистрировать" к примеру. И данные из временной таблицы переносятся в таблицу групп. Можно писать и не во временную, а сразу в основную, добавив, к примеру, какой то идентификатор, что бы знать, что группа не сформирована/сформирована. Как то так... По аналогии с журналом вы заполняете его страницы, а потом ложите журнал в шкаф.

По поводу организации таблиц в БД: вам потребуется таблица групп, таблица ролей ("лидеры", "сопровождающие", "участники"), таблица участников. Участники имеют роли и принадлежат группе. Группа имеет название или просто номер (тот же id).

Приведенный вами пример хорош, но когда вы его начнете заполнять, получится огромная форма с большим объемом отправляемых данных. А если ошибка? Забили человек 40, а потом сбой, и сидите забиваете по новому...

ИМХО  ::)

Спасибо за развернутый ответ! Возможно мой пример не самый лучший с точки зрения юзабилити и проверки ошибок, но сроки сжатые, поэтому сейчас разбираться еще и с AJAX в Joomla не очень хочется...
Сейчас нужно как можно быстрее как-то начать отправлять данные, иметь возможность загрузить их потом обратно в эту же форму. При этом я пытаюсь разобраться как писать такой компонент максимально используя готовые классы/функции Joomla, понять, как такое вообще пишется.
*

SeBun

  • BanMaster
  • 4015
  • 259 / 5
  • @SeBun48
Сейчас нужно как можно быстрее как-то начать отправлять данные, иметь возможность загрузить их потом обратно в эту же форму. При этом я пытаюсь разобраться как писать такой компонент максимально используя готовые классы/функции Joomla, понять, как такое вообще пишется.
Тогда делайте без аякса. Маленькая формочка на одного человека, после того, как соберется вся группа, зарегистрируете группу... Я думаю другого решения и не будет. И в случае сбоя не придется кучу народа переписывать.
Оказываю услуги по Joomla | Миграция/Обновление | Сопровождение | IT-аутсорсинг | Недорогие домены и хостинг
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Всем спасибо за ответы! Не ожидал, что развернется такая дискуссия)
Т.е. вы предлагаете полностью отказаться от JForm и собирать форму, грубо говоря, в HTML?
Правильно ли я понимаю, что без JForm, то станет невозможно работать через JControllerForm и JModelForm/JModelAdmin? До этого я использовал именно через них.
Ну если у вас будет форма в HTML то зачем вам нужен будет  JModelForm/JModelAdmin?) Но вы можете комбинировать все это ) Часть данных (которые одиночные поля) передавать через JForm, а остальные (динамичные поля) в модели/контроллере обработать и сохранить как нужно!


Совершенно верно: пользователи сначала проходят авторизацию и получают доступ к форме. Позже они могу внести в эту форму изменения.
Ну тогда все очень просто, создать динамичные поля(Которых вы сможете добавлять неограниченное количество), и в модели/контроллере отлавливать эти поля, обработать и посоздавать юзеров с рандомными именами и паролями!
*

asuran

  • Новичок
  • 5
  • 0 / 0
Ну если у вас будет форма в HTML то зачем вам нужен будет  JModelForm/JModelAdmin?) Но вы можете комбинировать все это ) Часть данных (которые одиночные поля) передавать через JForm, а остальные (динамичные поля) в модели/контроллере обработать и сохранить как нужно!

В моей примере что вы называете одиночными полями, а что динамичными? А JModelAdmin мне нужен хотя бы для того, чтобы потом выводить эту форму в админке компонента))

Ну тогда все очень просто, создать динамичные поля(Которых вы сможете добавлять неограниченное количество), и в модели/контроллере отлавливать эти поля, обработать и посоздавать юзеров с рандомными именами и паролями!

Совершенно не гарантируется, что пользователи, указанные в полях, были или будут зарегистрированы на сайте. Регистрация требуется только тому, кто будет эту форму заполнять, грубо говоря, "самому главному лидеру делегации". Возможно понадобится потом сделать какую-то связь с реальными пользователями, но это скорее задача на будущее)

Т.е. в итоге надо делать пользовательскую часть через JControllerLegacy, JModelLegacy и в них полностью самому прописывать методы сохранения и загрузки формы, правильно понял?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Плагин добавления пользовательских полей в форму редактирования материала

Автор zeus07

Ответов: 0
Просмотров: 887
Последний ответ 03.03.2017, 03:43:12
от zeus07
Ошибка в компоненте при передаче параметров в форму для редактирования на стороне сайта

Автор GuDeVic

Ответов: 66
Просмотров: 3463
Последний ответ 23.11.2016, 22:53:48
от GuDeVic
"Стереть" форму

Автор Wertos

Ответов: 2
Просмотров: 745
Последний ответ 22.07.2016, 16:21:27
от fsv
Не подгружаются данные в форму

Автор 32ops

Ответов: 12
Просмотров: 1433
Последний ответ 20.02.2016, 05:55:10
от 32ops
Меняю форму регистрации

Автор bigbaaaan

Ответов: 4
Просмотров: 856
Последний ответ 07.04.2015, 23:17:53
от bigbaaaan