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

ORM PHP Discussion :

gestion table i18n


Sujet :

ORM PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 534
    Par défaut gestion table i18n
    voila, j'ai une table ou je doit géré des langues, de cette table j'ai créer un module admin, sauf que quand je tente de rajouter un ligne j'ai un Insert en trop !!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    dimension:
      actAs:
        I18n:
          fields: [description,unite,facteur]
      columns:
        name: string(50)
        description: string(50)
        unite: string(50)
        facteur: float
    mon formulaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    class dimensionForm extends BasedimensionForm
    {
      public function configure()
      {
    	  $this->embedI18n(array('en', 'fr'));
          $this->widgetSchema->setLabel('en', 'English');
          $this->widgetSchema->setLabel('fr', 'French');
      }
    }
    et les request SQL engendré quand je tente de rajouter une dimension:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #
     
    INSERT INTO dimension_translation (id, lang, description, unite, facteur) VALUES ('4', 'en', 'Diameter', 'inch', '0.72')
    0.00s, "doctrine" connection
    #
     
    INSERT INTO dimension_translation (id, lang, description, unite, facteur) VALUES ('4', 'fr', 'Diamètre', 'm', '1')
    0.00s, "doctrine" connection
    #
     
    INSERT INTO dimension_translation (id, lang) VALUES ('4', 'fr_FR')
    le message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '4-fr' for key 'PRIMARY'
    d'ou vient cette dernière request ?

  2. #2
    Membre chevronné
    Inscrit en
    Août 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 360
    Par défaut
    Mistère de Doctrine...

    Ajoutes peut être une clé primaire dans ton schéma ?

    Cordialement,

    Mathieu

  3. #3
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Août 2008
    Messages : 26 772
    Par défaut
    Citation Envoyé par mathieu44800 Voir le message
    Ajoutes peut être une clé primaire dans ton schéma ?
    S'il n'y a pas de clé primaire dans une table, Doctrine en met une automatiquement (de nom id).

    De là à trouver la cause... Peut-être utiliser des id pour les langues plus explicites, avec indication de la région ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class dimensionForm extends BasedimensionForm
    {
      public function configure()
      {
    	  $this->embedI18n(array('en_GB', 'fr_FR'));
          $this->widgetSchema->setLabel('en_GB', 'English');
          $this->widgetSchema->setLabel('fr_FR', 'French');
      }
    }
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  4. #4
    Membre chevronné
    Inscrit en
    Août 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 360
    Par défaut
    Peut-on visualiser ce que génère symfony "BaseDimension" ?

    Cordialement,

    Mathieu

  5. #5
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 534
    Par défaut
    j'ai modifié mon schéma pour reprendre comme dans jobeet mais rien a faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    dimension:
      actAs:
        I18n:
          fields: [name,unite,facteur]
          actAs:
            Sluggable: { fields: [name], uniqueBy: [lang, name] }
      columns:
        name: string(50)
        unite: string(50)
        facteur: float
    mon fichier BaseDimension:
    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
     
    <?php
     
    /**
     * Basedimension
     * 
     * This class has been auto-generated by the Doctrine ORM Framework
     * 
     * @property string $name
     * @property string $unite
     * @property float $facteur
     * @property Doctrine_Collection $dimensionArticle
     * 
     * @method string              getName()             Returns the current record's "name" value
     * @method string              getUnite()            Returns the current record's "unite" value
     * @method float               getFacteur()          Returns the current record's "facteur" value
     * @method Doctrine_Collection getDimensionArticle() Returns the current record's "dimensionArticle" collection
     * @method dimension           setName()             Sets the current record's "name" value
     * @method dimension           setUnite()            Sets the current record's "unite" value
     * @method dimension           setFacteur()          Sets the current record's "facteur" value
     * @method dimension           setDimensionArticle() Sets the current record's "dimensionArticle" collection
     * 
     * @package    grandpapa
     * @subpackage model
     * @author     Your name here
     * @version    SVN: $Id: Builder.php 7490 2010-03-29 19:53:27Z jwage $
     */
    abstract class Basedimension extends sfDoctrineRecord
    {
        public function setTableDefinition()
        {
            $this->setTableName('dimension');
            $this->hasColumn('name', 'string', 50, array(
                 'type' => 'string',
                 'length' => 50,
                 ));
            $this->hasColumn('unite', 'string', 50, array(
                 'type' => 'string',
                 'length' => 50,
                 ));
            $this->hasColumn('facteur', 'float', null, array(
                 'type' => 'float',
                 ));
        }
     
        public function setUp()
        {
            parent::setUp();
            $this->hasMany('dimensionArticle', array(
                 'local' => 'id',
                 'foreign' => 'dimension_id'));
     
            $i18n0 = new Doctrine_Template_I18n(array(
                 'fields' => 
                 array(
                  0 => 'name',
                  1 => 'unite',
                  2 => 'facteur',
                 ),
                 ));
            $sluggable1 = new Doctrine_Template_Sluggable(array(
                 'fields' => 
                 array(
                  0 => 'name',
                 ),
                 'uniqueBy' => 
                 array(
                  0 => 'lang',
                  1 => 'name',
                 ),
                 ));
            $i18n0->addChild($sluggable1);
            $this->actAs($i18n0);
        }
    }

  6. #6
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 534
    Par défaut
    bien vu dourouc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    class dimensionForm extends BasedimensionForm
    {
      public function configure()
      {
    	  $this->embedI18n(array('en_GB', 'fr_FR'));
          $this->widgetSchema->setLabel('en_GB', 'English');
          $this->widgetSchema->setLabel('fr_FR', 'French');
      }
    }
    ça marche en partie, une erreur grossière dans le training de symfony:
    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
     
    // lib/form/JobeetCategoryForm.class.php
    class JobeetCategoryForm extends BaseJobeetCategoryForm
    {
      public function configure()
      {
        unset(
          $this['jobeet_affiliates_list'],
          $this['created_at'], $this['updated_at']
        );
     
        $this->embedI18n(array('en', 'fr'));
        $this->widgetSchema->setLabel('en', 'English');
        $this->widgetSchema->setLabel('fr', 'French');
      }
    }
    donc j'arrive a sauvegardé un nouvel enregistrement, mais....

    bein en édition tout mes champs sont vides

  7. #7
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Août 2008
    Messages : 26 772
    Par défaut
    Citation Envoyé par erictomcat Voir le message
    bein en édition tout mes champs sont vides
    Ils sont vides en base de données et à l'affichage ? Ou juste à l'édition ?

    Dans le premier cas, j'ai déjà eu ce problème, c'était un conflit dans mon schéma avec des relations... (Doctrine avait une même propriété dans un objet et pour l'ID d'un enregistrement, et pour l'objet correspondant). Mais je ne crois pas que c'est le cas, ici...
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  8. #8
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 534
    Par défaut
    non les données chargés via fixtures sont bien dans la base et le nouvel enregistrement est bien la aussi.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Formulaire générique gestion Table
    Par 105rn2 dans le forum VB.NET
    Réponses: 12
    Dernier message: 10/09/2012, 18h46
  2. [1.x] requete sur une table I18n
    Par yochima dans le forum Symfony
    Réponses: 6
    Dernier message: 27/10/2011, 10h13
  3. [Conception] gestion tables temporaires bd ?
    Par Pwill dans le forum Général Java
    Réponses: 12
    Dernier message: 08/07/2005, 14h49
  4. Gestion de table dynamique access avec delphi 7
    Par bob.marley dans le forum Bases de données
    Réponses: 7
    Dernier message: 22/04/2004, 13h12
  5. Gestion des Tables d'Object
    Par Laurent Dardenne dans le forum SQL
    Réponses: 27
    Dernier message: 17/04/2004, 12h39

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