Bonjour,

Je débute sous cakephp 2 et je n'ai aucune idée du comment débugger ce problème. En fait lorsque j'appelle ma vue, j'ai bien mon champs birth (date) correcte mais lorsque j'actualise celui-ci ne se met pas à jour et garde l'ancienne date.

Niveau controleur :

public function generate(){
        $HttpSocket = new HttpSocket();
        $results = $HttpSocket->get('http://fr.fakenamegenerator.com/gen-random-fr-fr.php', 
            array(), 
            array(
                'redirect' => true)
            );
        preg_match('/<h3>(.*)<\/h3>/i', $results->body(), $matches);
        $names = preg_split('/ /', $matches[1]);
        $person'surname'] = $names[1];
        $person'name'] = $names[0];
        preg_match('/<li class="bday">(.*)<\/li>/i', $results->body(), $matches);
        $person'birth'] = date('Y-m-d', strtotime(preg_replace('/ \((.*)\)/i' , '', $matches[1])));
        $this->request->data = array('Person' => $person);
    }

Niveau vue :

<h1>Generate person</h1>
<?php
echo $this->Form->create('Person', array('type' => 'get'));
echo $this->Form->input('surname');
echo $this->Form->input('name');
echo $this->Form->input('birth', array(
    'label' => 'birth',
    'dateFormat' => 'DMY',
    'minYear' => date('Y') - 100,
    'maxYear' => date('Y') ,
));
echo $this->Form->input('id', array('type' => 'hidden'));
echo $this->Form->end('Save');
?>

Exemple concret :

1er appel :

array(
    'Person' => array(
        'surname' => 'Talon',
        'name' => 'Karel',
        'birth' => '1933-01-15'
    )
)

Résultat au niveau des inputs : 15 - January - 1933

---> OK

Actualisation (F5) :

array(
    'Person' => array(
        'surname' => 'Lauzier',
        'name' => 'Gilles',
        'birth' => '1991-05-17'
    )
)

Résultat au niveau des inputs : 15 - January - 1933

---> PAS OK

Comment régler ce problème? Est-ce le cache? Comment accéder aux selected?

En vous remerciant d'avance :-)

3 réponses


st3fn
Auteur

up...

Je suis pas certain d'avoir compris tout le code de ton controller mais une actualisation n'est pas une sauvegarde. Si ta date est sauvegardée en base, que tu la modifies sans sauvegarder et que tu actualises, c'est normal qu'il affiche la date sauvegardée non ?

st3fn
Auteur

Merci Johayeux pour ton intervention. Il n'y a pas de base de données, c'est simplement une fonction qui va scrapper du contenu sur un site et l'affiche dans des champs. Lors de l'appel de la fonction generate, je vais chercher un nom, prénom et date de naissance. Lors du premier appel les champs sont tous correctes, mais lors d'une actualisation (les infos changent), les champs nom et prenoms sont bien changés mais pas la date...

En gros :

array(
'Person' => array(
'surname' => 'Talon',
'name' => 'Karel',
'birth' => '1933-01-15'
)
)

Mes champs au niveau de ma vue sont bons, après actualisation (F5, pour générer une nouvelle identité) :

array(
'Person' => array(
'surname' => 'Martin',
'name' => 'Dupond',
'birth' => '1958-10-10'
)
)

et c'est la que ça coince, les champs nom et prenom prennent bien la nouvelle valeur au niveau de la vue : Martin et Dupond mais le select de la date reste sur 1933-01-15 au lieu de 1958-10-10...