IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Champs qui ne se sauvegardent pas


Sujet :

Symfony PHP

  1. #21
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 131
    Points : 46
    Points
    46
    Par défaut
    J'ai fait la mise à jour :

    - Mon champs de type time 'horaire_matin_debut' ne se sauvegarde pas (en création ou en modif)

    - Une bonne moitié des champs de mon formulaire ne sont pas mis à jour quand je modifie une déclaration (tous ceux faisant partie du formulaire principal "Declararation", ça marche pour les embeddedForms)

    Je vais me mettre à pleurer.

    check_configuration me renvoie ça :

    OK PHP version is at least 5.2.4 (5.2.6-1+lenny4)

    ** Optional checks **

    OK PDO is installed
    OK PDO has some drivers installed: mysql
    OK PHP-XML module is installed
    OK XSL module is installed
    OK The token_get_all() function is available
    OK The mb_strlen() function is available
    OK The iconv() function is available
    OK The utf8_decode() is available
    [[WARNING]] A PHP accelerator is installed: FAILED
    *** Install a PHP accelerator like APC (highly recommended) ***
    [[WARNING]] php.ini has short_open_tag set to off: FAILED
    *** Set it to off in php.ini ***
    [[WARNING]] php.ini has magic_quotes_gpc set to off: FAILED
    *** Set it to off in php.ini ***
    OK php.ini has register_globals set to off
    OK php.ini has session.auto_start set to off
    OK PHP version is not 5.2.9

  2. #22
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 131
    Points : 46
    Points
    46
    Par défaut
    J'ai aucune piste.. la maj de symfony semble avoir empiré les choses.. (sauf si je n'avais pas tout remarqué avant) !!

    Le comportement est exactement le même dans l'admin generator..

    Un espoir tout de même si on peut dire lorsque je modifie une déclaration, aucun champ de mon formulaire principal n'est sauvé, seulement ceux faisant partie de mes embeddedForms !

  3. #23
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    Tu peux peut-être faire deux essais.

    Généré sur la table principale un crud de base avec tous les champs et vérifier si cela marche. Puis sur les deux tables inclues.
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  4. #24
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 131
    Points : 46
    Points
    46
    Par défaut
    Très, très bonne idée ! merci beaucoup !

    Avec un crud sans embeddedForms, juste l'objet principal, je n'ai absolument aucun souci !

    Le problème vient donc probablement de ma classe DeclarationForm. Voici le code que j'ai laissé, aucun souci dans l'admin generator :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    <?php
     
    /**
     * Declaration form.
     *
     * @package    declarationsAT
     * @subpackage form
     * @author     Your name here
     * @version    SVN: $Id: sfDoctrineFormTemplate.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
     */
    class DeclarationForm extends BaseDeclarationForm
    {
    	public function configure()
    		{
    		$this->widgetSchema['constat'] = new sfWidgetFormInputCheckbox();
    		$this->widgetSchema['accident_conteste'] = new sfWidgetFormInputCheckbox();
    		$this->widgetSchema['avec_arret'] = new sfWidgetFormInputCheckbox();
    		$this->widgetSchema->setHelp('avec_arret', 'Donne lieu à un arrêt de travail ?');
     
    		$this->validatorSchema['constat'] = new sfValidatorBoolean();
    		$this->validatorSchema['accident_conteste'] = new sfValidatorBoolean();
    		$this->validatorSchema['avec_arret'] = new sfValidatorBoolean();
     
    		$this->setDefault('horaire_matin_debut', "08:00");
    		$this->setDefault('horaire_matin_fin', "12:00");
    		$this->setDefault('horaire_apres_midi_debut', "14:00");
    		$this->setDefault('horaire_apres_midi_fin', "18:00");
     
    		unset($this['date_creation'],$this['clone'],$this['iddeclaration_clone'],$this['idvictime'],$this['idetat'],$this['auteur_login'],$this['iddeclaration_clone']);
    		$user = sfContext::getInstance()->getUser();
    		if ($user->hasCredential("CDS") && !$user->hasCredential("Admin") && !$user->hasCredential("HS")){ // Chefs de service : certains champs ne sont pas nécessaires
    			$this->validatorSchema['asouat_idasouat']->setOption('required', false);
    			unset($this['accident_conteste'],$this['nb_jours_soin'],$this['avec_arret'],$this['nb_jours_arret'],$this['Commentaire']);
    		}
     
    		$this->widgetSchema['date_premiers_soins'] = new sfWidgetFormJQueryDate(array('culture' => 'fr', 'format' => '%day%/%month%/%year%',));
    		$this->widgetSchema['date_accident'] = new sfWidgetFormJQueryDate(array('culture' => 'fr', 'format' => '%day%/%month%/%year%',));
    		$this->widgetSchema['date_transport'] = new sfWidgetFormJQueryDate(array('culture' => 'fr', 'format' => '%day%/%month%/%year%',));
     
    		$this->widgetSchema->setLabels(array(
    			'matricule_rh' => 'Matricule de la victime',
    			'date_creation' => 'Date de cr&eacute;ation',
    			'date_premiers_soins' => 'Date',
    			'heure_premiers_soins' => 'Heure',
    			'lieu_premiers_soins' => 'Lieu',
    			'premiere_personne_avisee_nom'	=> 'Nom',
    			'premiere_personne_avisee_prenom'	=> 'Pr&eacute;nom',
    			'date_accident' => 'Date',
    			'heure_accident' => 'Heure',
    			'lieu_accident' => 'Lieu',
    			'circonstances_accident' => 'Circonstances',
    			'circonstances_accident' => 'Circonstances',
    			'nature_travail' => 'Nature du travail',
    			'date_transport' => 'Date',
    			'heure_transport' => 'Heure',
    			'destination_transport' => 'Destination',
    			'intervenant_transport' => 'Intervenant',
    			'sst_nom' => 'Nom',
    			'sst_prenom' => 'Pr&eacute;nom',
    			'avec_arret' => 'Avec Arr&ecirc;t',
    			'commentaire' => 'Commentaire',
    			'nb_jours_arret' => 'Nombre de jours d\'arr&ecirc;t',
    			'nb_jours_soin' => 'Nombre de jours de soin',
    			'auteur_login' => 'Auteur',
    			'accident_conteste' => 'Accident contest&eacute; ?',
    			'constat' => 'Constat ?',
    			'clone' => 'Clone ?',
    			'horaire_matin_debut' => 'Horaire d&eacute;but de matin&eacute;e',
    			'horaire_matin_fin' => 'Horaire fin de matin&eacute;e',
    			'horaire_apres_midi_debut' => 'Horaire d&eacute;but d\'apr&egrave;s midi',
    			'horaire_apres_midi_fin' => 'Horaire fin d\'apr&egrave;s midi',
    			'idtiersresponsable' => 'Tiers responsable',
    			'idtypeaccident' => 'Type d\'accident',
    			'iddeclaration_clone' => 'Declaration (clone)',
    			'idetat' => 'Etat',
    			'idregime' => 'R&eacute;gime',
    			'idservice' => 'Service',
    			'idsituation' => 'Situation',
    			'asouat_idasouat' => 'AS ou AT ?',
    		));
     
    		}
    }
    Une idée ?

  5. #25
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 131
    Points : 46
    Points
    46
    Par défaut
    Bon, je me suis rendu compte qu'il manquait l'appel parent::doSave() dans ma méthode doSave(). Si j'ajoute la ligne, tous mes champs se sauvegardent bien.

    Par contre, j'ai toujours les soucis pour deux champs qui restent impossibles à modifier : ces fameux champs time.

    Je précise qu'en réduisant le formulaire à son strict minimum, je n'ai pas de souci pour la mise à jour de ces deux champs.

    Je sens qu'on approche.

  6. #26
    Membre éprouvé Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Points : 933
    Points
    933
    Par défaut
    Si ces champs ne figurent pas dans la requête SQL, j'aurais tendance à dire qu'ils ont été supprimés/"unsettés" quelque part dans le processus.

    Est-ce que tu les as bien dans le doSave() et le doBind() de ta classe DeclarationForm, au moins ?

  7. #27
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 131
    Points : 46
    Points
    46
    Par défaut
    Merci beacoup ! J'ai trouvé ! ça marche !! tu as raison, c'était bien à cause d'un unset que je faisais dans un validateur personnalisé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // On n'enregistre pas en base les tiers responsables vides
     
    				if (!$value['nom'] && !$value['prenom'] && !$value['adresse'] && !$value['ville'])
    				{
    					unset($values[$key]);
    				}
    Ca devait unseter ces champs là, je ne sais pas trop pourquoi. En tout cas, en enlevant ce bout de code, tout roule !

    Merci à vous tous !!!

    @+

Discussions similaires

  1. [AC-2007] Formatage conditionnel qui ne se sauvegarde pas ?
    Par marot_r dans le forum VBA Access
    Réponses: 5
    Dernier message: 10/01/2018, 10h43
  2. [AC-2007] champ qui ne s'enregistre pas
    Par pepsister dans le forum IHM
    Réponses: 27
    Dernier message: 12/04/2010, 10h26
  3. Récupération d'un champ qui ne se fait pas (access 2000)
    Par Ptite_Tigresse dans le forum IHM
    Réponses: 2
    Dernier message: 08/08/2008, 10h32
  4. Champs qui ne s'affichent pas dans formulaire
    Par capitaine dans le forum Access
    Réponses: 1
    Dernier message: 02/06/2006, 15h00
  5. Ne pas afficher un champs qui est vide dans ma BD
    Par yoda_style dans le forum ASP
    Réponses: 3
    Dernier message: 27/04/2004, 11h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo