CakePHP 3 - Analisar Data com LocalStringFormat para corrigir o formato SQL e validação correta
declaramos que as seguintes linhas na função de inicialização do nosso AppController têm globalmente o mesmo formato para exibir datas:
// default time formats on load
Time::$defaultLocale = 'de-DE';
Time::setToStringFormat('dd.MM.YYYY');
Isso funcionou bem. A data é exibida corretamente na exibição. Mas obtemos um erro de validação se queremos salvar a entidade com o campo de data (o valor fornecido é inválido). O validador está configurado da seguinte maneira:
$validator
->add('datefield', 'valid', ['rule' => 'date'])
->allowEmpty('datefield');
Aqui, uma depuração da entidade com o campo de data:
Antes do patchEntity:
'datefield' => '08.07.2014'
Após patchEntity:
'datefield' => object(Cake\I18n\Time) {
'time' => '2014-07-08T00:00:00+0000',
'timezone' => 'UTC',
'fixedNowTime' => false
},
....
'[errors]' => [
'datefield' => [
'valid' => 'The provided value is invalid'
]
],
Existe uma maneira de sempre analisar a Data globalmente no formato correto para salvar a entidade e a validação.