Разборът (в процеса на маршалиране) и валидирането нямат нищо общо един с друг, първото ще се случи след последното.
Проверете date
API на метода за валидиране, той приема допълнителни аргументи, тоест формата, който да се използва, и персонализиран регулярен израз, който да се използва вместо предварително дефинираните.
API> \Cake\Validation\Validation::дата()
Така че, за да потвърдите правилно вашите локализирани немски данни, ще трябва да посочите dmy
формат.
->add('datefield', 'valid', ['rule' => ['date', 'dmy']])
Ако искате да приложите локализирано валидиране глобално, по начин, при който форматът може да бъде променен от една точка във вашето приложение, тогава можете например да използвате персонализирано правило за валидиране и глобално достъпен персонализиран доставчик, който извлича формата от вашите приложения конфигурация, като
namespace App\Validation;
use Cake\Core\Configure;
use Cake\Validation\Validation;
class AppValidation
{
public static function date($check) {
return Validation::date($check, Configure::read('Locale.validation.dateFormat'));
}
}
$validator->provider('appValidation', 'App\Validation\AppValidation');
$validator->add('datefield', 'valid', [
'rule' => 'date',
'provider' => 'appValidation'
])
Вижте също Cookbook> Validation> Персонализирани правила за валидиране