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 :

embedI18N et admin


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 62
    Par défaut embedI18N et admin
    Bonjour,

    J'ai modifié mon modèle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    country:
      connection: doctrine
      tableName: country
      actAs:
        I18n:
          fields: [country]
      columns:
        country:
          type: string(150)
          notnull: true
        flag:
          type: string(255)
    j'ai donc une table country_translation qui a été crée et le champ country est "parti" dans cette table.

    Dans mon admin j'avais créé un module country, maintenant le champ country n'apparait plus.
    Donc j'ai modifié le fichier lib/form/countryForm.class.php
    ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class countryForm extends BasecountryForm
    {
      public function configure()
      {
        //parent::configure();
     
        $this->embedI18n(array('en', 'fr'));
        $this->widgetSchema->setLabel('en', 'English');
        $this->widgetSchema->setLabel('fr', 'French');
      }
    }
    mais malheureusement toujours rien....

    Merci d'avance de votre aide.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 62
    Par défaut
    toutes mes excuses,

    Fallait modifier le BackendcountryForm

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 62
    Par défaut
    Finalement, si une petite erreur que je ne comprends pas...

    Donc j'ai dans ma class :
    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
    class BackendcountryForm extends BasecountryForm
    {
      public function configure()
      {
        parent::configure();
     
        // Enlever croix rouge image manquante en modification :
        if ($this->getObject()->getFlag() <> null)
            {
            $afficherflag = '<div>%file% <br />%input%<br />%delete% %delete_label%</div>';}
        else{
            $afficherflag = '<div><br />%input%<br />%delete% %delete_label%</div>';
            }
     
        $this->widgetSchema['flag'] = new sfWidgetFormInputFileEditable(array(
          'label'     => 'Country flag',
          'file_src'  => '/uploads/flags/'.$this->getObject()->getFlag(),
          'is_image'  => true,
          'edit_mode' => !$this->isNew(),
          'template'  => $afficherflag
     
        ));
     
        $this->setValidator('flag', new sfValidatorFile(array(
        'mime_types' => 'web_images',
        'path' => sfConfig::get('sf_upload_dir').'/flags',
        'required' => false,
      )));
     
        $this->validatorSchema['flag_delete'] = new sfValidatorBoolean();
     
        $this->embedI18n(array('en', 'fr'));
        $this->widgetSchema->setLabel('en', 'English');
        $this->widgetSchema->setLabel('fr', 'French');
     
        $this->validatorSchema['country'] = new sfValidatorString(array('max_length' => 150));
     
      }
     
    }
    A l'exécution, je rempli tous les champs, et j'obtiens un superbe :

    $form (BackendcountryForm)
    Required.

    $form['id'] (sfWidgetFormInputHidden)
    $form['flag'] (sfWidgetFormInputFileEditable)
    $form['en']['country'] (sfWidgetFormInputText)
    $form['fr']['country'] (sfWidgetFormInputText)
    $form['_csrf_token'] (sfWidgetFormInputHidden)

    2 impressions :
    Faut il redeclarer tous les validators ?
    Il semble vouloir l'id de country pour la table translation alors que l'enregistrement dans country n'est pas encore effectif....

    Alors une nouvelle fois que tous mes champs sont remplis....merci d'avance de vos réponses.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 62
    Par défaut
    C'est très bizarre, il enregistre bien maintenant : déplacement de parent::configure(); à la fin de la fonction configure.

    mais il n'enregistre pas :

    $form['en']['country'] (sfWidgetFormInputText)
    $form['fr']['country'] (sfWidgetFormInputText)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 62
    Par défaut
    veuillez m'excuser, mais si quelqu'un pouvait m'aider, je commence à en perdre un peu mon latin....

    Merci d'avance

    Guillaume

  6. #6
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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
    Par défaut
    Tes deux enregistrements sont dans une table qui est liée avec la table country.

    Il faut donc que l'id de l'objet country soit accessible pour pouvoir enregistrer les objets dépendants.

    Je pense que tu as intérêt a gérer l'enregistrement des deux champs manuellement, mais sans garantie, je n'ai jamais testé ni l"une i l'autre.

Discussions similaires

  1. [Shareware] Logiciel d'admin MySQL : SQLyog
    Par Marc Lussac dans le forum Outils
    Réponses: 27
    Dernier message: 11/03/2008, 08h50
  2. Réponses: 2
    Dernier message: 14/03/2004, 16h14

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