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

1.1.2 Добавление пользователя

Тема в разделе "Вопросы и ответы по XenForo Framework", создана пользователем Desperado, 08.05.2012.

Загрузка
  1. Desperado

    Desperado Местный

    Регистрация:
    23.10.10
    Сообщения:
    270
    Симпатии:
    98
    Версия XF:
    1.1.3
    День добрый.
    Встала задача добавить пользователя.
    Пошёл расковырял регистрацию, родил такой вот говнокодец:

    PHP:
                XenForo_Autoloader::getInstance()->setupAutoloader(XENFORO_DIR 'library');
                
    XenForo_Application::initialize(XENFORO_DIR 'library'XENFORO_DIR);
                
    $userModel XenForo_Model::create('XenForo_Model_User');
           
                
    $userGroup 2;
           
                if ( empty(
    $userData) )
                {
                    
    $data = array(
                        
    'username'  => $result['user_name'],
                        
    'email'    => getRandomString(5) . '@ya.ru',
                        
    'timezone'  => 'Europe/Moscow',
                        
    'gender'    => 'ctrl_gender_',
                        
    'dob_day'  => date('j'),
                        
    'dob_month' => date('n'),
                        
    'dob_year'  => date('Y'),
                    );
     
                    
    $writer XenForo_DataWriter::create('XenForo_DataWriter_User');
                    
    $writer->bulkSet($data);
                    
    $writer->setSecondaryGroups(array()); 
                    
    $writer->setPassword($password$password);
                    
    $writer->set('user_group_id'$userGroup);
                    
    $writer->set('language_id'2);
     
                    
    $customFields = array(
                        
    'aim'      => '',
                        
    'msn'      => '',
                        
    'icq'      => '',
                        
    'yahoo'    => '',
                        
    'skype'    => '',
                        
    'gtalk'    => '',
                        
    'facebook' => '',
                        
    'twitter'  => ''
                    
    );
     
                    
    $customFieldsShown = array( 'aim''msn''icq''yahoo''skype''gtalk''facebook''twitter' );
     
                    
    $writer->setCustomFields($customFields$customFieldsShown);
                    
    $writer->advanceRegistrationUserState();
                    
    $writer->preSave();
                    
    $writer->save();
                }
    Вроде всё хорошо, но при вызове метода save() вылетает эксепшен

    XenForo_Exception: Please enter a valid value. - /http/forum/library/XenForo/DataWriter.php:1321

    Не подскажите, в чём собственно косяк? Ибо информация с эксепшена ну вообще никак картины не раскрывает
     
  2. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Проще всего в отладчике посмотреть трассировку и стек и найти, из какого места эксепшен вызывается. А так можно только гадать.
     
  3. Desperado

    Desperado Местный

    Регистрация:
    23.10.10
    Сообщения:
    270
    Симпатии:
    98
    Версия XF:
    1.1.3
    Да вот думал мб кто сталкивался с этим.
    Ибо эксепшен действительно из разряда "пальцем в небо". Хотя и данные, вроде как, все верные проставлены.
     
  4. Pepelac

    Pepelac Продам луц в бутылках

    Регистрация:
    28.09.10
    Сообщения:
    1 794
    Симпатии:
    1 361
    Это исключение дает понять, что какие-то данные все же не проставлены.

    Рекомендую ознакомиться с объявлением полей в датарайтере XenForo_DataWriter_User и с методом actionRegister класса XenForo_ControllerPublic_Register.
     
  5. Desperado

    Desperado Местный

    Регистрация:
    23.10.10
    Сообщения:
    270
    Симпатии:
    98
    Версия XF:
    1.1.3
    Ну представленный код как раз и выдран из actionRegister
    Пробывал даже из админ контроллера выдирать добавление пользователя... Тот же эксепшен.

    Ладно, отладчиком поиграюсь.
     
  6. Pepelac

    Pepelac Продам луц в бутылках

    Регистрация:
    28.09.10
    Сообщения:
    1 794
    Симпатии:
    1 361
    Тогда внимательнее изучите датарайтер. К примеру, пол пользователя может принимать значения male, female и пустую строку. А вы этому параметру подсовываете строку ctrl_gender_.
     
    Desperado нравится это.
  7. Desperado

    Desperado Местный

    Регистрация:
    23.10.10
    Сообщения:
    270
    Симпатии:
    98
    Версия XF:
    1.1.3
    А вот и косяк. Банальная невинимательность и элементарная тупость(
     

Поделиться этой страницей