Решил попробовать библиотеки валидации по синаксису валидации LIVR
livr-spec.org
Смысл в том, что одни и те-же правила должны работать и во фронтенде и на бэкенде. Подкупила мысль о том, что один раз задам правила в синтаксисе
{
name: 'required',
email: ['required', 'email'],
gender: { one_of: ['male', 'female'] },
phone: {max_length: 10},
password: ['required', {min_length: 10} ],
password2: { equal_to_field: 'password' }
}
А дальше библиотека для JS
https://github.com/koorchik/js-validator-livr сама все сделает (и она правда делает).
А библиотека для php
https://github.com/WebbyLab/php-validator-livr разберется с серверной проверкой (и она тоже работает).
И вот ума не приложу, как исходный код правил валидации конвертировать к такому, чтобы понимала библиотека на пхп. Ей надо их скормить в таком виде:
$validator = new Validator\LIVR( [
'name' => 'required',
'email' => [ 'required', 'email'],
'gender' => [ 'one_of' => ['male', 'female'] ],
'phone' => [ 'max_length' => 10 ],
'password' => [ 'required', ['min_length' => 10] ],
'password2' => [ 'equal_to_field' => 'password' ]
] );
Думал, что это json, а похоже что нет.