6#include "validatorrule_p.h"
8#include <Cutelyst/Context>
9#include <Cutelyst/ParamsMultiMap>
17 : d_ptr(new ValidatorRulePrivate(field, messages, defValKey, validatorName))
38 if (!d->field.isEmpty() && !params.
empty()) {
40 return params.
value(d->field).trimmed();
42 return params.
value(d->field);
53 if (d->messages.label) {
54 return d->translationContext ? c->
translate(d->translationContext, d->messages.label)
55 : c->
qtTrId(d->messages.label);
63 Cutelyst::ValidatorRtFn cb)
const
66 qCCritical(C_VALIDATOR).noquote()
67 <<
debugString(c) <<
"validateCb method is not implemented on this validator";
78 if (d->messages.validationError) {
79 return d->translationContext
80 ? c->
translate(d->translationContext, d->messages.validationError)
81 : c->
qtTrId(d->messages.validationError);
93 return c->
qtTrId(
"cutelyst-valrule-genvalerr");
97 return c->
qtTrId(
"cutelyst-valrule-genvalerr-label").
arg(_label);
106 if (d->messages.parsingError) {
107 return d->translationContext ? c->
translate(d->translationContext, d->messages.parsingError)
108 : c->
qtTrId(d->messages.parsingError);
120 return c->
qtTrId(
"cutelyst-valrule-genparseerr");
124 return c->
qtTrId(
"cutelyst-valrule-genparseerr-label").
arg(_label);
133 if (d->messages.validationDataError) {
134 return d->translationContext
135 ? c->
translate(d->translationContext, d->messages.validationDataError)
136 : c->
qtTrId(d->messages.validationDataError);
148 return c->
qtTrId(
"cutelyst-valrule-genvaldataerr");
152 return c->
qtTrId(
"cutelyst-valrule-genvaldataerr-label").
arg(_label);
158 Q_ASSERT_X(c,
"getting default value",
"invalid context object");
159 Q_ASSERT_X(result,
"getting default value",
"invalid result object");
161 if (!d->defValKey.isEmpty() && c->
stash().contains(d->defValKey)) {
163 qCDebug(C_VALIDATOR).noquote().nospace()
164 << d->validatorName <<
": Using default value " << result->
value <<
" for field \""
171 Q_ASSERT_X(c,
"getting default value",
"invalid context object");
173 if (!d->defValKey.isEmpty() && c->
stash().contains(d->defValKey)) {
174 const auto defVal = c->
stash(d->defValKey);
175 qCDebug(C_VALIDATOR).noquote().nospace()
176 << d->validatorName <<
": Using default value " << defVal <<
" for field \"" <<
field()
178 cb({.errorMessage = {}, .value = defVal});
195 return d->trimBefore;
198void ValidatorRule::setTrimBefore(
bool trimBefore)
noexcept
201 d->trimBefore = trimBefore;
204void ValidatorRule::setTranslationContext(
const char *trContext)
noexcept
207 d->translationContext = trContext;
void stash(const QVariantHash &unite)
QString translate(const char *context, const char *sourceText, const char *disambiguation=nullptr, int n=-1) const
QString qtTrId(const char *id, int n=-1) const
Base class for all validator rules.
QString field() const noexcept
QString validationError(Context *c, const QVariant &errorData={}) const
QString label(const Context *c) const
virtual QString genericValidationDataError(Context *c, const QVariant &errorData={}) const
virtual QString genericValidationError(Context *c, const QVariant &errorData={}) const
virtual ~ValidatorRule()
Deconstructs the ValidatorRule.
bool trimBefore() const noexcept
QString debugString(const Context *c) const
ValidatorRule(const QString &field, const ValidatorMessages &messages={}, const QString &defValKey={}, QByteArrayView validatorName=nullptr)
QString validationDataError(Context *c, const QVariant &errorData={}) const
std::function< void(ValidatorReturnType &&result)> ValidatorRtFn
Void callback function for validator rules that processes the ValidatorReturnType.
void defaultValue(Context *c, ValidatorReturnType *result) const
QString value(const ParamsMultiMap ¶ms) const
virtual void validateCb(Context *c, const ParamsMultiMap ¶ms, ValidatorRtFn cb) const
QString parsingError(Context *c, const QVariant &errorData={}) const
virtual QString genericParsingError(Context *c, const QVariant &errorData={}) const
The Cutelyst namespace holds all public Cutelyst API.
T value(const Key &key, const T &defaultValue) const const
QString arg(Args &&... args) const const
QString fromLatin1(QByteArrayView str)
bool isEmpty() const const
void setValue(QVariant &&value)
Stores custom error messages and the input field label.
Contains the result of a single input parameter validation.