Обязательные поля профиля (модификация)
Итак, предположим, что нужные поля уже созданы (
1. Правим файл ./classes/actions/ActionRegistration.class.php
Добавляем проверку полей «Фамилия» и «Имя».
Я считаю, для фамилии достаточно 100 симолов, а для имени 50.
/**
* Проверка фамилии
*/
if (!func_check(getRequest('surname'),'text',2,100)) {
$this->Message_AddError($this->Lang_Get('registration_surname_error'),$this->Lang_Get('error'));
$bError=true;
}
/**
* Проверка имени
*/
if (!func_check(getRequest('name'),'text',2,50)) {
$this->Message_AddError($this->Lang_Get('registration_name_error'),$this->Lang_Get('error'));
$bError=true;
}
Для добавления полей в базу данных изменим этот блок:
/**
* Создаем юзера
*/
$oUser=new UserEntity_User();
$oUser->setLogin(getRequest('login'));
$oUser->setMail(getRequest('mail'));
$oUser->setPassword(func_encrypt(getRequest('password')));
$oUser->setDateRegister(date("Y-m-d H:i:s"));
$oUser->setIpRegister(func_getIp());
Добавив:
// Добавляем имя
$oUser->setProfileName(getRequest('name'));
// Добавляем фамилию
$oUser->setProfileSurname(getRequest('surname'));
Опять же, вспомним допущение: поля в базе данных уже есть и функции для работы дополнительных полей (setProfileName, getProfileName, setProfileSurname, getProfileSurname) уже описаны в ./classes/modules/user/entity/User.entity.class.php.
2. Изменяем ./classes/modules/user/mapper/User.mapper.class.php
Находим функцию Add. Вместо:
public function Add(UserEntity_User $oUser) {
$sql = "INSERT INTO ".DB_TABLE_USER."
(user_login,
user_password,
user_mail,
user_date_register,
user_ip_register,
user_activate,
user_activate_key,
)
VALUES(?, ?, ?, ?, ?, ?, ?)
";
if ($iId=$this->oDb->query($sql,$oUser->getLogin(),$oUser->getPassword(),$oUser->getMail(),$oUser->getDateRegister(),$oUser->getIpRegister(),$oUser->getActivate(),$oUser->getActivateKey())) {
return $iId;
}
return false;
}
Вставляем следующее:
public function Add(UserEntity_User $oUser) {
$sql = "INSERT INTO ".DB_TABLE_USER."
(user_login,
user_password,
user_mail,
user_date_register,
user_ip_register,
user_activate,
user_activate_key,
user_profile_name,
user_profile_surname
)
VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)
";
if ($iId=$this->oDb->query($sql,$oUser->getLogin(),$oUser->getPassword(),$oUser->getMail(),$oUser->getDateRegister(),$oUser->getIpRegister(),$oUser->getActivate(),$oUser->getActivateKey(),$oUser->getProfileName(),$oUser->getProfileSurname())) {
return $iId;
}
return false;
}
Примечание: поле user_profile_surname расположено после поля user_profile_name. Будьте внимательны при заполнении базы данных.
3. Добавляем фразы.
Открываем ./templates/language/<ваш языковой пакет>.php
'registration_name_error' => 'Неверное имя, допустимо от 2 до 50 символов',
'registration_surname_error' => 'Неверная фамилия, допустима от 2 до 100 символов',
'registration_surname' => 'Фамилия',
'registration_name' => 'Имя',
4. Редактируем шаблон
Изменяем ./templates/skin/<ваш скин>/actions/ActionRegistration/index.tpl. В нужное место добавляем:
<label for="surname">{$aLang.registration_surname}:</label><br />
<p><input type="text" class="input-text" id="surname" value="{$_aRequest.surname}" name="surname"/></p><br />
<label for="surname">{$aLang.registration_name}:</label><br />
<p><input type="text" class="input-text" id="name" value="{$_aRequest.name}" name="name"/></p><br />
Готово.
При обнаружении ошибок, просьба оставлять комментарии, либо писать в приват.
26 комментариев
Правим шаблон:
Изменяем проверку
Мне кажется, достаточно того, чтобы $_POST['profile_sex'] был не пустым.
Добавляем фразу:
Всё остальное — аналогично. Должно работать.
Если ошибся (ведь всего две недели кручу Livestreet), будьте добры, поправьте.
Пользователь при регистрации себя ранжирует, от этого цвет ника его на сайте соответствующий (список людей, топики, эфир). В настройках профиля может ранг менять, ну и в профиле отображает ранг.
Думаю, многим было бы интересно ;)
Вплотную не занимался (разве что научился ник «красить». Например:
Увы, в связи с некоторой временной занятостью, не могу, с высокой вероятностью, пообещать оформить всё в отдельный топик.
Спасибо за предложение.
Когда вводишь имя, более длинное, чем 20 символов — никакой ошибки не выдается, соответствующее поле очищается и никакого сообщения не выдается…
ИМХО — этот неправильно…
Решил для себя следующим образом.
Языковой файл:
\classes\actions\ActionSettings.class.php:
При регистрации у меня не требуется ввод имени, но делается переадресания на настройку профиля. Если пользователь решит изменить свой профиль (а он это захочет сделать, хотябы для того, чтобы пол изменить), то ему придется вносить настоящее имя.
Касаемо предложения: вероятно, смогу и большее, однако врядли вас устроит уровень знания первокурсника. Спасибо за предложение.
Всем комментаторам: прошу прощения, что не отвечал. Учебный процесс занимает всё свободное время.
Спасибо за топик, очень помог. Но одну проблему мы так решить и не смогли.
Добавили в регистрацию поле «страна», действовали и по вашей инструкции, и перерыли в движке процесс обновления профиля. Бестолку. Страна в базе к юзеру не привязывается.
Можете помочь? Какие именно запросыы к бд необходимо совершить для этого?
вот такая штука на 0.4.2, в чем может быть проблема?
проблема была в названии функции
еще добавлении колонки в mysql
Короче, вместо ЭТОГО
Ставим ЭТО
И вместо ЭТОГО
Ставим ЭТО
// Добавляем имя
$oUser->setProfileName(getRequest('profile_name'));
// Добавляем фамилию
$oUser->setProfileSurname(getRequest('profile_surname'));
Остальное все как в топике…
в /actions/ActionRegistration/index.tpl:
в языковом файле создаю запись
но без толку, в чём ошибка? (может дело в плагине расширенной регистрации)