Новости Joomla

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

Paha_web

  • Захожу иногда
  • 166
  • 1 / 0
  • Еще правок хотите?
Всем привет. Передо мною встала задача, сделать регистрацию без логина, т.е. чтобы вместо логина подставлялся email автоматом.
Нашел я плагин один. но он не работает. Логин не меняется при сохранении.

Код
jimport('joomla.plugin.plugin');

class plgSystemRegEmail extends JPlugin {

    function onAfterInitialise()
    {
        if (JRequest::getVar('task') == 'registration.register') {
            JRequest::setVar('username', JRequest::getVar('email'));
        }
    }
}

этот плагин мне кажется работает только под Joomla 1.5.

Я решил написать свой плагин пишу в нем такой код

Код
 
jimport('joomla.plugin.plugin');
 
class plgUserMyMeta extends JPlugin
{
public function onBeforeStoreUser($context, &$article, $isNew)
{
        if (JRequest::getVar('task') == 'registration.register') {
            JRequest::setVar('username', JRequest::getVar('email'));
        }
}
}

не работает.

В общем помогите кто чем может, как сделать регистрацию без логина. Чтобы потом авторизация была по email.
« Последнее редактирование: 01.07.2014, 17:57:09 от Paha_web »
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Не могу разобраться с onBeforeStoreUser
« Ответ #1 : 01.07.2014, 19:46:13 »
Во второй версии вроде как onUserBeforeSave событие называется . Третьим параметром передаются свойства вроде как . Их и меняйте. JRequest класс вобще уже устарел во второй версии он depricated а в третьей возможно и вобще его выпилили..
интернет-блог: http://websiteprog.ru
*

Paha_web

  • Захожу иногда
  • 166
  • 1 / 0
  • Еще правок хотите?
Re: Не могу разобраться с onBeforeStoreUser
« Ответ #2 : 01.07.2014, 20:40:51 »
jimport('joomla.plugin.plugin');
 
class plgUserMyMeta extends JPlugin
{
   public function onUserBeforeSave($user, $isnew)
   {
          
         if (JRequest::getVar('task') == 'registration.register') {
            $user['username'] = $user['email'];
        }

   }
}

не работает.
JRequest - это класс который обрабатывает входящие данные из GET или POST

подкиньте идеи
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Не могу разобраться с onBeforeStoreUser
« Ответ #3 : 01.07.2014, 20:43:49 »
Вам же сказали
JRequest класс вобще уже устарел во второй версии он depricated а в третьей возможно и вобще его выпилили..
Код: php-brief
JFactory::getApplication()->input->get()
JFactory::getApplication()->input->set()
Не будь паразитом, сделай что-нибудь самостоятельно!
*

Paha_web

  • Захожу иногда
  • 166
  • 1 / 0
  • Еще правок хотите?
Re: Не могу разобраться с onBeforeStoreUser
« Ответ #4 : 01.07.2014, 21:34:18 »
Пробую:

Код
jimport('joomla.plugin.plugin');
 
class plgUserMyMeta extends JPlugin
{
public function onUserBeforeSave($user, $isnew, $new)
{
       
           $jform = JFactory::getApplication()->input->get('jform', array(), 'array');
           $email = $jform['email'];
           JFactory::getApplication()->input->set($jform['username'],$email);
}
}

не работает
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Не могу разобраться с onBeforeStoreUser
« Ответ #5 : 02.07.2014, 00:54:38 »
А зачем вы в jinput устанавливаете свойство? После вызова метода save и плагинов он уже ни на что не влияет, как впрочем и не влияют свойства которые передаются в плагин. Как вариант изменить email уже после сохранения юзера:
Код: php
public function onUserAfterSave($user, $isNew, $result, $Error)
{
    if ($isNew) {
$user['username'] = $user['email'];
$table = JTable::getinstance('user', 'jtable');
$table->bind($user);
$table->store();
    }
}

Возможно еще как то и через объект juser менять свойство, но тогда надо будет придумать способ избежать рекурсии в методе save
« Последнее редактирование: 02.07.2014, 01:08:55 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Не могу разобраться с onBeforeStoreUser
« Ответ #6 : 02.07.2014, 11:05:19 »
Был невнимателен:
- в J2.5 JRequest еще работает
- на onUserBeforeSave не получится менять рег.данные: объект $table уже предопределен до этого
- делайте как zomby6888 подсказал.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

Paha_web

  • Захожу иногда
  • 166
  • 1 / 0
  • Еще правок хотите?
Re: Не могу разобраться с onBeforeStoreUser
« Ответ #7 : 02.07.2014, 22:26:16 »
А зачем вы в jinput устанавливаете свойство? После вызова метода save и плагинов он уже ни на что не влияет, как впрочем и не влияют свойства которые передаются в плагин. Как вариант изменить email уже после сохранения юзера:
Код: php
public function onUserAfterSave($user, $isNew, $result, $Error)
{
    if ($isNew) {
$user['username'] = $user['email'];
$table = JTable::getinstance('user', 'jtable');
$table->bind($user);
$table->store();
    }
}

Возможно еще как то и через объект juser менять свойство, но тогда надо будет придумать способ избежать рекурсии в методе save

Работает. Спасибо.

А как можно сделать чтобы менять параметр $user['username'] перед сохранением в БД.
Чтобы при регистрации вобще убрать поле логин. Чтобы не вводить вообще логин, а подставлять в него значение емайла автоматом перед сохранинием.
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Не могу разобраться с onBeforeStoreUser
« Ответ #8 : 03.07.2014, 09:05:55 »
Ну назовите поле email, label формы поменяйте и все, главное чтобы аттрибут name у input формы был  jform[name] - вроде так. По идее там никаких фильтров на username не накладывается, так что можете спокойно email использовать в качестве логина. А еще кстатии, сейчас подсмотрел в модели при формировании данных запускается событие onContentPrepareData, можно там данные менять наверняка.
интернет-блог: http://websiteprog.ru
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Не могу разобраться с onBeforeStoreUser
« Ответ #9 : 03.07.2014, 11:19:35 »
onContentPrepareData, можно там данные менять наверняка.
Нет, не получится.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Не могу разобраться с onBeforeStoreUser
« Ответ #10 : 03.07.2014, 11:32:59 »
Цитировать
Нет, не получится.
Ага, тоже сейчас посмотрел, вот если бы там метод getData сохранял данные которые ему возвращают методы плагинов, а там только проверка на true или false..
интернет-блог: http://websiteprog.ru
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Разобраться с мобильной версией

Автор Pepperoni

Ответов: 1
Просмотров: 1073
Последний ответ 19.12.2020, 09:53:38
от Physicist
Не могу добавить глобальный тег

Автор Hellboy4ik

Ответов: 14
Просмотров: 2867
Последний ответ 03.10.2018, 18:45:01
от NewUsers
Не могу найти, где править описания товаров

Автор Anna

Ответов: 4
Просмотров: 1512
Последний ответ 14.01.2018, 21:25:52
от Anna
Не могу восстановить пароль администратора

Автор vasya_p

Ответов: 32
Просмотров: 5462
Последний ответ 04.12.2017, 20:53:21
от vasya_p
не могу зайти в панель управления

Автор Мурашка

Ответов: 21
Просмотров: 2625
Последний ответ 20.10.2017, 12:35:05
от SeBun