1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Is it possible to return custom error messages on option validation callback ?

Discussion in 'XenForo Development Discussions' started by Tom Christian, Oct 8, 2014.

  1. Tom Christian

    Tom Christian Active Member

    I followed this tutorial but I get the below error when the callback returns false.

    Code:
    Server Error
    Parameter 2 to Callback_UserField::validate() expected to be a reference, value given
    
    [LIST=1]
    [*]XenForo_Application::handlePhpError()
    [*]call_user_func_array() in XenForo/DataWriter/Option.php at line 346
    [*]XenForo_DataWriter_Option->_validateOptionValuePreSave() in XenForo/DataWriter/Option.php at line 211
    [*]XenForo_DataWriter_Option->_preSave() in XenForo/DataWriter.php at line 1446
    [*]XenForo_DataWriter->preSave() in XenForo/DataWriter.php at line 1385
    [*]XenForo_DataWriter->save() in XenForo/Model/Option.php at line 572
    [*]XenForo_Model_Option->updateOptions() in XenForo/ControllerAdmin/Option.php at line 174
    [*]XenForo_ControllerAdmin_Option->actionSave() in XenForo/FrontController.php at line 347
    [*]XenForo_FrontController->dispatch() in XenForo/FrontController.php at line 134
    [*]XenForo_FrontController->run() in /Users/tomchristian/Dropbox/www/xenforo1.3/admin.php at line 13
    
    Any ideas?
     
  2. Brogan

    Brogan XenForo Moderator Staff Member

    Yes, it's possible, I do it for my add-on.

    Here's a snippet.

    PHP:
        public static function verifyOption(&$optionValueXenForo_DataWriter $dw$fieldName)
        {
            if (
    $dw->isInsert())
            {
                return 
    true;
            }

            if (!
    $optionValue)
            {
                
    $optionValue $dw->get('default_value');

                return 
    true;
            }

            if (
    $optionValue['featurer'] == 'member')
            {
                
    $existingUser XenForo_Model::create('XenForo_Model_User')->getUserByName($optionValue['name']);

                if (!isset(
    $optionValue['forums']) && !$existingUser)
                {
                    
    $dw->error(new XenForo_Phrase('cta_ft_option_select_at_least_one_forum_enter_valid_member_name'), $fieldName);
                    return 
    false;
                }
     
    SneakyDave, Tom Christian and Chris D like this.
  3. Tom Christian

    Tom Christian Active Member

Share This Page