Bonjour,
Je rencontre un pb de format de date affichée dans un champ input text dans cakephp3. J'ai besoin de ce type de champ input car j'utilise un datepicker et non pas les 3 listes deroulantes classisques.
La recuperation des données d'une personne me donne sa date de naissance au format objet FrozenDate
/src/Controller/AdherentsController.php (line 129)
object(App\Model\Entity\Adherent) {
'id' => (int) 64,
'foyer_id' => (int) 52,
'nom' => 'HENRY',
'prenom' => 'Maxime',
'date_naissance' => object(Cake\I18n\FrozenDate) {
'time' => '2002-04-26T00:00:00+00:00',
'timezone' => 'UTC',
'fixedNowTime' => false
}
}
L'information date de naissance est placée dans un champ input de type texte :
<div class="form-group">
<?php echo $this->Form->input('date_naissance', ['label' => 'Date de naissance', 'type' => 'text', 'class' => 'datepkr form-control', 'required' => true]);?>
</div>
L'information date de naissance est alors affichée comme cela dans le champs : 25/04/2002
Ce format pose problème car dès que je soumets les infos au patchEntity avant le save, cakephp ne comprend pas la date et place la date epoch par défaut ( 1970-01-01)
Savez vous comment dire au champ input de conserver le format donné ?
Merci
Cordialement
Franck
avec cette la fonction strtotime ca ne fonctionne pas correctement.
En cherchant, j'ai trouvé la fonction setToStringFormat().
Dans la vue ca fonctionne correctement avant la declaration du champ date de naissance
Ce qui donne :
<div class="form-group">
<?php
Cake\I18n\FrozenDate::setToStringFormat('yyyy-MM-dd');
echo $this->Form->input('date_naissance', ['label' => 'Date de naissance', 'type' => 'text', 'class' => 'datepkr form-control', 'required' => true]);?>
</div>
et si tu spécifies la valeur de l'input en forçcant le format ?
<?php echo $this->Form->input('date_naissance', [ 'value'=>date('Y-m-d',strotime($variable->date_naissance)), 'label' => 'Date de naissance', 'type' => 'text', 'class' => 'datepkr form-control', 'required' => true]);?>
date('Y-m-d',strotime($variable->date_naissance) ne fonctionne pas
$variable->date_naissance est une instance de l'objet date FrozenDate
Le mecanisme est tel que la fonction toString() renvoie une chaine simple representant la date.
C'est le format implicte appliqué par toString() qu'il faut personnaliser pour arriver à ce besoin.
C'est ce que j'ai compris de la doc tout du moins.