Parsley: customize error message

1

I'm using the Parsley plugin for form validation and I'm creating some additional validation methods, however, I'm having difficulty personalizing the messages of these functions.

According to the site documentation, we can add a custom method as follows:

window.Parsley.addValidator('equals', {
    validateString: function validateString(value, comparar_com, texto_erro) {
        return (value === comparar_com);
    },
    requirementType: 'string',
    messages: {
        pt_BR: 'O seguinte valor é esperado: %s'
    }
});

With the code above Parsley would display in the error message the second parameter of the function, which would be 'compare_com', but I wanted the text defined in the third parameter, 'error_text', to be displayed in the error message, and not the 'compare_with'.

Can anyone tell me if this is possible? Parsley uses the following function to mount the error messages:

// Kind of light 'sprintf()' implementation
formatMessage: function formatMessage(string, parameters) {
...

I'm trying something here, still unsuccessful, but am I on the right track?

    
asked by anonymous 08.11.2016 / 20:26

1 answer

0

Just to register how to customize an error message using one of the parameters used in the validation as part of the message, here's an example of a function I added to Parsley:

/**
 * Verifica se o valor existe em uma lista de valores permitidos
 *
 * @param   string    value   Valor que será validado
 * @param   mix       list    Lista de valores permitidos. Pode ser um array ou uma string separada por vírgula
 * 
 * @return  bool
 *
 * Utilização:
 * data-parsley-in-list="Opção 1,Opção 2"
 *
 */
window.Parsley.addValidator('inList',
{
    validateString: function validateString(value, list)
    {
        if(typeof list != 'object')
        {
            list = list.split(',');
        }
        if(list.length > 0)
        {
            for(var i in list)
            {
                // trim
                if(value === list[i].replace(/^\s+|\s+$/gm, ''))
                {
                    return true;
                }
            }
        }

        // Monta a string com a lista das opções
        var new_list = list.join(', ');

        // Redefine a mensagem de erro formatando a lista de opções
        var new_error_msg = 'O valor deve ser uma das seguintes opções: ' + new_list;

        // Atualiza a mensagem do erro
        window.Parsley._validatorRegistry.catalog.pt_BR.inList = new_error_msg;

        return false;
    },
    requirementType: 'string',
    messages:
    {
        pt_BR: 'O valor deve ser uma das seguintes opções: %s'
    }
});
    
03.02.2017 / 05:02