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 :

Formulaires: champ "externes" [Débutant(e)]


Sujet :

Symfony PHP

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 14
    Par défaut Formulaires: champ "externes"
    Bonsoir à tous,

    Petite contextualisation: dans mon modèle, j'ai une classe resources à laquelle est associée une classe resource_descriptions de sorte que dans la classe BaseResources, on retrouve: @property Doctrine_Collection $ResourceDescriptions.

    Voici ma requête: j'aimerais spécifier dans la méthode 'useFields()' d'un formulaire associé à resources que je souhaite voir apparaître un champ 'descriptions'. Comment puis-je faire cela?

    Merci d'avance pour votre aide.

    Kantho

  2. #2
    Membre émérite Avatar de kenny.kev
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    646
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Indre et Loire (Centre)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 646
    Par défaut
    Voici le lien http://www.symfony-project.org/more-...Advanced-Forms

    Ce n'est pas la méthode useField qui ne sert que pour les champs d'un formulaire.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 14
    Par défaut
    Merci pour le lien, je regarde ça demain et j'indique si j'y ai trouvé réponse à ma question!

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 155
    Par défaut
    En principe, si ton schema.yml décrit correctement la relation qui existe entre tes deux tables (n-n si je comprends bien), ton formulaire devrait avoir un widget resource_descriptions_list

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 14
    Par défaut
    @keeny.kev: merci pour le lien, j'y ai partiellement trouvé ma réponse.

    @jekif: la relation est une 1-N entre resource et resource_descriptions et malgré que mon schéma est bien défini, pas de tel widget.

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 155
    Par défaut
    Alors en effet il faut utiliser des formulaires imbriqués.

    Tu dis que tu n'as trouvé que "partiellement" ta réponse dans le lien de keeny.kev... qu'est-ce qu'il te manque alors ?

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 14
    Par défaut
    Et bien, il me reste un problème à l'édition de mon formulaire.

    J'ai une relation many to many entre ma table resources et resource_languages. Intuitivement, plusieurs langues peuvent être utilisées au sein d'une même ressource (vidéo).

    Donc, dans le formulaire pour resource_languages, je configure de manière à disposer d'une liste de checkboxes de la manière suivante:

    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
     
    class ResourceLanguagesForm extends BaseResourceLanguagesForm{
     
        public function configure(){
            unset($this['id']);
     
            $this->useFields(array('lang_id'
                                  )
                            );
     
            $this->setWidgets(array('lang_id' => new sfWidgetFormChoice(array('choices'  => Languages::getLanguagesSet('en'),'expanded' => true,'multiple' => true),array('class' => 'checkbox'))));
     
            $this->setValidators(array('lang_id' => new sfValidatorChoice(array('choices' => array_keys(Languages::getLanguagesSet('en')), 'multiple' => true))));
     
            $this->widgetSchema->setLabels(array('lang_id' => 'Languages'));
        }
    }
    Bien sûr, comme je veux utiliser le formulaire en imbriqué, j'ajoute ceci à mon formulaire resources:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    $this->embedRelation('ResourceLanguages');
    Et, enfin, dans editSuccess.php, j'ai ceci pour me permettre d'éditer (je n'ai mis que l'essentiel pour comprendre mon problème) :

    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
     
     
    <h1>Edit Resources</h1>
     
    <!--<?php include_partial('form', array('form' => $form)) ?>-->
     
    <form action="<?php echo url_for('resources/update?id='.$form->getObject()->getId()) ?>" method="post">
        <input type="hidden" name="sf_method" value="put" />
        <?php echo $form->renderHiddenFields() ?>
     
        <?php echo $form['title']->renderLabel()?> <?php echo $form['title']->renderError()?> <?php echo $form['title'] ?><br/>
     
        <?php
            foreach ($form['ResourceLanguages'] as $languages){
                echo $languages['lang_id']->renderLabel();
                echo $languages['lang_id']->renderError();
                echo $languages['lang_id'];
            }
        ?>
     
       <input type="submit" value="Save" />
    </form>
     
    <a href="<?php echo url_for('@homepage')?>">Back to list</a>
    Et là, deux problèmes:
    1) A cause du foreach, j'ai autant de liste de checkboxes qu'il y a de valeurs de resource_languages associées à resources. J'aimerais les fusionner en une seule liste qui reprend les valeurs mais je ne vois pas comment faire.
    2) Quand je tente, par exemple, d'ajouter une langue en cochant la langue voulue, j'ai une erreur SQL qui se produit me signalant que je tente d'entrer un doublon dans resource_languages...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    9	 Doctrine_Connection_Statement	execute : UPDATE resource_languages SET lang_id = ? WHERE id = ? AND lang_id = ? - (Array, 19, en)
    10	 Doctrine_Connection_Statement	execute : UPDATE resource_languages SET lang_id = ? WHERE id = ? AND lang_id = ? - (Array, 19, fr)
    11	 Doctrine_Connection_Mysql_Exception	SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '19-Ar' for key 1
    Mon schéma de table est pourtant bien défini, je ne comprends pas d'où vient l'erreur... Pourriez-vous m'aider s'il-vous-plaît?

  8. #8
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 155
    Par défaut
    essaie de rajouter ResourceLanguages dans le useFields parce que là tu dis au formulaire de n'utiliser que lang_id...

  9. #9
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 14
    Par défaut
    Le widget que tu me proposes d'ajouter n'existe pas...

    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
     
     
    abstract class BaseResourceLanguagesForm extends BaseFormDoctrine
    {
      public function setup()
      {
        $this->setWidgets(array(
          'id'      => new sfWidgetFormInputHidden(),
          'lang_id' => new sfWidgetFormInputHidden(),
        ));
     
      //....
      }
      //....
    }
    Je n'ai toujours pas trouvé la solution...Merci quand même.

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/11/2005, 14h51

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