Bonjour,
Je suis un débutant symfony (6 mois), je tiens à m'excuser d'avance si mes propos ne sont pas claires. Voila mon problème.
J'ai créée un formulaire d'inscription. Il s'affiche correctement et il est correctement validé. Pour vérifier, je fais une sortie vers une page :
$this->redirect('utilisateur/thankyou?'.http_build_query($this->form->getValues())); Je récupére tous les champs correctement formatés.
Je lance mon formulaire d'inscription depuis ma page principale :
fichier indexSuccess.php
<a href="<?php echo url_for('@inscription'); ?>">Inscription</a>
Mon fichier routing.yml contient :
1 2 3 4 5 6
| inscription:
url: /:sf_culture/inscription.html
#url: /inscription.html
param: { module: utilisateur, action: new }
requirements:
sf_culture: (?:fr|en) |
Le fichier action.class.php du module utilisateur contient :
1 2 3 4 5 6
| public function executeNew(sfWebRequest $request)
{
$this->form = new UsagerUtilisateurForm();
if ($request->isMethod('post'))
{$this->processForm($request, $this->form);}
} |
et
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| protected function processForm(sfWebRequest $request, sfForm $form)
{
$this->forward404Unless($request->isMethod('post'));
$form->bind($request->getParameter($form->getName()));
if ($this->form->isValid())
{
$utilisateur = $form->save();
$utilisateur->setDateInscription(date('Y-m-d H:i:s'));
$utilisateur->setIpInscription($_SERVER['REMOTE_ADDR']);
$utilisateur->save();
//test :
$this->redirect('utilisateur/thankyou?'.http_build_query($this->form->getValues()));
} |
Le problème :
1 - les données affichés sur le formulaire sont enregistrés en base (commande insert) sauf si j'utilise un setPostValidator,
2 - la fonction $utilisateur->save (commande update) ne met pas à jour l'enregistrement courrant avec les données setDateInscription et setIpInscription, dans la requête :
UPDATE usager_utilisateur SET date_inscription = ?, ip_inscription = ? WHERE id = ? AND usager_theme_id = ? AND usager_logo_id = ? AND usager_logo_usager_theme_id_theme = ? AND usager_timezone_id = ? AND usager_nga_id = ? - (2011-02-09 14:54:05, 127.0.0.1, , , , , , )
Il me semble que le problème soit lié à l'id qui n'est pas repris dans la requête.
Cela fait 5 jours que je cherche, je n'ai pas trouvé de solution pour régler mon problème.
Pour contourner le problème, je vais passer ces deux champs en hidden, c'est pas propre mais je pense que cela va marcher.
Si quelqu'un peu m'aider je serais très content
merci d'avance.
Partager