Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > symfony
symfony Forum d'entraide sur le framework PHP symfony. Avant de poster : cours symfony et FAQ symfony
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/01/2012, 10h12   #1
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 311
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 311
Points : 33
Points : 33
Par défaut problème de sauvegarde de formulaire avec utilisation de RenderRow()

Bonjour à tous,

j'ai un souci pour la sauvegarde des données d'un fomulaire, je m'explique, voici le code de mon "_form":

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
 
<?php use_stylesheets_for_form($form) ?>
<?php use_javascripts_for_form($form) ?>
<?php include_javascripts() ?>
 
<form action="<?php echo url_for('article/'.($form->getObject()->isNew() ? 'create' : 'update').(!$form->getObject()->isNew() ? '?id='.$form->getObject()->getId() : '')) ?>" method="post" <?php $form->isMultipart() and print 'enctype="multipart/form-data" ' ?>>
 
<?php if (!$form->getObject()->isNew()): ?>
<input type="hidden" name="sf_method" value="put" />
<?php endif; ?>
 
 
  <?php echo $form->renderHiddenFields() ?>
 
<div class="cl2">
  <fieldset class="description ">
    <legend>Description</legend>
    <table class="fmGd">
      <tbody>
        <tr><?php echo $form['reference']->renderRow() ?></tr>
        <tr><?php echo $form['fournisseur']->renderRow() ?></tr> 
        <tr><?php echo $form['prix']->renderRow() ?></tr>
        <tr><?php echo $form['titre']->renderRow() ?></tr>
....       
      </tbody>
    </table>
  </fieldset>    
</div>
 
 <div class="cl3">  
  <fieldset class="tech">
    <legend>Fiche technique</legend>
    <table class="fmGd">
      <tbody>
        <tr><?php echo $form['composant']->renderRow() ?></tr>
      </tbody>
    </table>
  </fieldset>    
</div>  
 
 
 
 <div>
  <a href="<?php echo url_for('article/index') ?>">Back to list</a>
  <?php if (!$form->getObject()->isNew()): ?>
    &nbsp;<?php echo link_to('Delete', 'article/delete?id='.$form->getObject()->getId(), array('method' => 'delete', 'confirm' => 'Are you sure?')) ?>
  <?php endif; ?>
 
  <input type="submit" value="Save" />
 
</div>
 
 
</form>
alors avec ce code, les données envoyées par le formulaire ne sont pas sauvegardées dans la base de données.
sinon, lrosque je mets à la place des div et des renderRow() un simple :
Code :
1
2
 
<?php echo $form ?>
la sauvegarde marche bien alors que je voudrais quand même personnaliser l'affichage de mon formulaire

Merci pour votre aide!!
flora806 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2012, 10h40   #2
Membre chevronné
 
Avatar de kenny.kev
 
Homme
Inscription : janvier 2007
Messages : 577
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France, Indre et Loire (Centre)

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2007
Messages : 577
Points : 692
Points : 692
Envoyer un message via MSN à kenny.kev
Des champs que tu ne veux pas afficher qui sont obligatoire ?

Dans ton objet NomTableFrom.class.php c'est la que tu active les champs et les rends obligatoire
kenny.kev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2012, 10h49   #3
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 311
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 311
Points : 33
Points : 33
Non, en fait quand je dis personnaliser mon formulaire, ce n'est pas par rapport aux champs obligatoires ou pas, c'est juste une question d'affichage et de feuille de style et avec un simple "echo $form", je ne peux rien faire.

mais je comprends toujours pas pourquoi la sauvegarde ne marche pas
flora806 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2012, 10h54   #4
Membre chevronné
 
Avatar de kenny.kev
 
Homme
Inscription : janvier 2007
Messages : 577
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France, Indre et Loire (Centre)

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2007
Messages : 577
Points : 692
Points : 692
Envoyer un message via MSN à kenny.kev
J'ai tout a fait compris ça.

si le echo $form; fonctionne et pas quand tu le personnalise c'est que tu as un obligatoire oublié.
Par exemple la clé csrf_secret si tu ne l'as pas désactivé.
kenny.kev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2012, 11h03   #5
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 311
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 311
Points : 33
Points : 33
Mais comment je pourrais désactiver ce qui est obligatoire et la csrf_secret?
juste pour info dans mon ArticleForm.class.php j'ai juste fait un:

Code :
1
2
 
unset($this['created_at'], $this['updated_at']);

Merci Kenny
flora806 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2012, 11h36   #6
Membre chevronné
 
Avatar de kenny.kev
 
Homme
Inscription : janvier 2007
Messages : 577
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France, Indre et Loire (Centre)

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2007
Messages : 577
Points : 692
Points : 692
Envoyer un message via MSN à kenny.kev
En modifiant les validator's de tes champs je te renvoie au cours sur les formulaires http://www.symfony-project.org/jobee...Doctrine/en/10

Pour le csrf_secret tu as, dans le form :
Code :
$this->disableCSRFProtection();
Mais tu devrais avoir une erreur ? tu es sur d'être en mode dev ?
kenny.kev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2012, 12h14   #7
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 311
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 311
Points : 33
Points : 33
oui, je suis bien en mode dev.
j'ai testé avec disableCSRFProtection(), ça marche toujours pas.
dans ma classe "ArticleForm.class.php", voici ce que j'ai changé:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 
public function configure()
  { 	
 	parent::configure();
 
 	$this->disableCSRFProtection();
 
	unset($this['created_at'], $this['updated_at']); 
 
	 $this->useFields(array('typologie', 'reference',
     'nom', 'dateFabrication', 'datePeremption', 'fabricant_list'));
 
  $this->widgetSchema->setLabels(array(
  'typologie'    => 'Typologie  :',
  'reference' => 'Référence  :',
  'nom' => 'Nom  :',
  'dateFabrication' => 'Date de fabrication  :',
  'datePeremption' => 'Date de péremption  :',
  'fabricant_list' => 'Fabriquants  :'
 
    ));
 
 
 
 
   $this->widgetSchema['fabricant_list']->setLabel('Fabriquants :');
   $this->widgetSchema['fabricant_list']->setOption('renderer_class', 'sfWidgetFormSelectDoubleList');
   $this->widgetSchema['fabricant_list']->setOption('renderer_options', 
   array('label_unassociated' => 'Disponible(s)','label_associated'=>'Rajouté(s)'));
 
  	$this->setWidget('dateFabrication',  new sfWidgetFormI18nDate(array('culture' => 'fr')));
	$this->setWidget('datePeremption',  new sfWidgetFormI18nDate(array('culture' => 'fr')));
 
 
  }
est_ce que je dois redéfinir les validators aussi?
flora806 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2012, 14h36   #8
Membre chevronné
 
Avatar de kenny.kev
 
Homme
Inscription : janvier 2007
Messages : 577
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France, Indre et Loire (Centre)

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : janvier 2007
Messages : 577
Points : 692
Points : 692
Envoyer un message via MSN à kenny.kev
Pourrais-tu donner l'erreur je ne peux pas d'aider sans ça ?

Tu peux redéfinir les validator's si tu en as le besoin.
kenny.kev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2012, 15h13   #9
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 311
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 311
Points : 33
Points : 33
En fait ça ne m'affiche aucune erreur, c'est juste qu'il me renvoie vers le même formulaire en mode édition.
flora806 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h48.


 
 
 
 
Partenaires

Hébergement Web