Добавление полей в форму регистрации

  • 10 Ответов
  • 1425 Просмотров

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

*

kolka-jan

  • Захожу иногда
  • **
  • 23
  • 0
Ситуация следующая. Необходимо добавить поле «Возраст» в форму регистрации. Использую альтернативный модуль авторизации BT-login, но, в принципе, вопрос касается любого модуля авторизации, хоть и встроенного, родного.
Делаю следующие шаги:
1.   После поля USERNAME добавляю поле AGE в свою базу данных в таблицу ХХХ_users, поле текстовое, тип VARCHAR, длина 2.

2.    Добавляю в САЙТ/modules/название_модуля_авторизации/tmpl/default.php новое поле – «Возраст»:

<div class="btl-field">
<div class="btl-label"><?php echo JText::_( 'AGE' ); ?></div>
<div class="btl-input">
<input id="btl-input-age" type="age" name="jform[age]" />
</div>
</div>         
<div class="clear"></div>   
Теперь у меня в форме регистрации появляется это поле для заполнения.

3.   Добавляю в профиль пользователя поле «Возраст» в файл САЙТ/components/com_users/models/forms/registration.xml
      
<field name="age" type="text"
         description="Введите свой возраст"
         filter="string"
         label="Возраст"
         required="true"
         size="30"
      />
Появляется это поле для самого пользователя

4.   Аналогично добавляю в профиль пользователя в админке поле «Возраст» в файл САЙТ/administrator/components/com_users/models/forms/user.xml

      <field name="age" type="text"
         description="Введите Ваш возраст"
         label="Возраст"
         required="true"
         size="30"
      />
Появляется поле возраста в админке при просмотре профиля пользователей

5.   В в САЙТ/libraries/joomla/user/user.php после поля username добавляю поле age:

/**
                * The users age
                * @var    string
                * @since  11.1
                */
               public $age = null;


Все поля прописаны, все есть. НО!
Значение возраста, вводимое при регистрации в форму регистрации – не вносится ни в базу данных (поле AGE), ни видно в админке или профиле пользователя!
Как сделать так, чтобы заполнение в форме регистрации синхронизировалось с БД и полями Возраста в профиле пользователя?

*

b2z

  • Support Team
  • *****
  • 7452
  • 741
  • Разраблю понемногу
Для таких вещей используют профиль, а не таблицу users. На форуме вели обсуждение по добавлению полей в форму регистрации. Не понимаю, при чем тут модули - они не отвечают за регистрацию.

*

kolka-jan

  • Захожу иногда
  • **
  • 23
  • 0
Для таких вещей используют профиль, а не таблицу users.
Но данные о пользователях находятся как раз в таблице users. Я что-то не так понимаю?
На форуме вели обсуждение по добавлению полей в форму регистрации. Не понимаю, при чем тут модули - они не отвечают за регистрацию.
Честно искал - не нашел. Буду признателен за подсказку. Joomla 3.3.6


*

kolka-jan

  • Захожу иногда
  • **
  • 23
  • 0
http://joomlablog.ru/prijomy-poleznye-tryuki/30-rasshirennye-profili-polzovatelej-v-joomla-17
http://library.logicsistemi.it/en/joomla/general-topics/40-joomla-25-extending-users-data-with-custom-fields
Спасибо за ссылки - решение рабочее, хорошо. Однако оно работает с родным модулем авторизации. Не могу разобраться - как заставить его работать с альтернативным модулем авторизации.

*

perezxxx

  • Захожу иногда
  • **
  • 12
  • -1
Получилось победить проблему?
У меня такая же

*

Mila

  • Захожу иногда
  • **
  • 22
  • 0
Добрый день. Помогите разобраться, пожалуйста. Только не плюйте в меня, что полезла в движок (при изначальном поиске решения проблемы полезла на форумы и нашла такое решение. Почти работает. Но только "почти"  ;)

Суть вопроса: нужно добавить дополнительное поле с целью регистрации на сайте в форму регистрации. Поле только одно, так что подключать целый плагин профилей не хотелось.

Что сделала:
1. добавила строку "purpose" в базу данных, таблица _users. (varchar(100), utf8).
2. Внесла изменения в файл user.php из папки libraries/joomla/user: добавила код public $purpose= null;
3. Внесла изменения в файл users.xml из папки administrator/components/com_users/models/forms. Добавила код
 
Код
   <field name="purpose" type="text"
        description="Определите цель регистрации: регистрация на вэбинар, запись на консультацию"
        label="Цель регистрации"
        required="true"
        size="60"
/>
4. Добавила тот же код в registration.xml из папки components/com_users/models/forms

И все бы хорошо, да только вместо нормальной формы выбегают крокозяблы. И внизу маленькая приписочка: 500 JForm::getInstance could not load file  ^-^

Поможете?

*

Mila

  • Захожу иногда
  • **
  • 22
  • 0
Заменила русские буквы на константы, прописала константы в языковом файле. Форма появилась, но вместо букв знаки вопроса. И одного поля не хватает. Т.е. надписей 9, а полей для ввода 8. Может кто сталкивался, подскажите.
« Последнее редактирование: 29.12.2016, 19:00:55 от Mila »


*

Mila

  • Захожу иногда
  • **
  • 22
  • 0
Предлагаете вернуть все как было и включить таки плагин профиля? Жаль, а так хотелось домучать начатое)) А главное, что все выглядит очень логично и не понятно почему не работает(( :( Кстати, дополнительное поле добавилось, а вот с кодировкой так вопрос и не решила. Откатываю обратно(
« Последнее редактирование: 29.12.2016, 20:12:54 от Mila »

*

b2z

  • Support Team
  • *****
  • 7452
  • 741
  • Разраблю понемногу
Предлагаете вернуть все как было и включить таки плагин профиля? Жаль, а так хотелось домучать начатое)) А главное, что все выглядит очень логично и не понятно почему не работает(( :( Кстати, дополнительное поле добавилось, а вот с кодировкой так вопрос и не решила. Откатываю обратно(
Лучше плагин. А выйдет 3.7, появятся кастомные поля и вообще всё проще будет.