Jak přepsat výchozí validační zprávy?
- Martin Vágovszký
- Člen | 17
V Nette\Forms\Validator je toto:
/** @var array */
public static $messages = [
Controls\CsrfProtection::PROTECTION => 'Your session has expired. Please return to the home page and try again.',
Form::EQUAL => 'Please enter %s.',
Form::NOT_EQUAL => 'This value should not be %s.',
Form::FILLED => 'This field is required.',
Form::BLANK => 'This field should be blank.',
Form::MIN_LENGTH => 'Please enter at least %d characters.',
Form::MAX_LENGTH => 'Please enter no more than %d characters.',
Form::LENGTH => 'Please enter a value between %d and %d characters long.',
Form::EMAIL => 'Please enter a valid email address.',
Form::URL => 'Please enter a valid URL.',
Form::INTEGER => 'Please enter a valid integer.',
Form::FLOAT => 'Please enter a valid number.',
Form::MIN => 'Please enter a value greater than or equal to %d.',
Form::MAX => 'Please enter a value less than or equal to %d.',
Form::RANGE => 'Please enter a value between %d and %d.',
Form::MAX_FILE_SIZE => 'The size of the uploaded file can be up to %d bytes.',
Form::MAX_POST_SIZE => 'The uploaded data exceeds the limit of %d bytes.',
Form::MIME_TYPE => 'The uploaded file is not in the expected format.',
Form::IMAGE => 'The uploaded file must be image in format JPEG, GIF, PNG or WebP.',
Controls\SelectBox::VALID => 'Please select a valid option.',
Controls\UploadControl::VALID => 'An error occurred during file upload.',
];
Chtěl bych z toho udělat něco jako:
/** @var array */
public static $messages = [
...
Form::NOT_EQUAL => 'messages.forms.not_equal %s.',
Form::FILLED => 'messages.forms.filled',
Form::BLANK => 'messages.form.blank',
...
];
Poradí někdo jak by se to dalo udělat? Je to kvůli překládání. Používám contributte/translation a nevím si moc rady, jak jednoduše překládat zprávy typu Form::NOT_EQUAL kde je fixní + dynamická část zprávy. Díky za radu.
- Mistrfilda
- Člen | 76
Ahoj,
možností je více. Vždy je nutné ale mít nastavený translator pro daný
formulář $form->setTranslator($translator);
(https://doc.nette.org/…on/templates#…)
Defaultni hlášky jsem vždy dával přes neon – https://doc.nette.org/cs/configuring#…
forms:
messages:
BLANK: 'messages.form.blank'
Pokud je nutné u validačního pravidla dodat i parametr (např. počet znaků) tak mě nenapadá jak by se to defaultně dalo řešit, když je nutné stejně dodat 2 parametr (např. maximalní počet znaků) – mělo by stačit něco takového
$form->addPassword('password', 'Heslo:')
->addCondition(Form::MIN_LENGTH, 'messages.form.min_lenght', 8);
Parametr 8
se do translate metody předá automaticky.