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 :

symfony 1.4 sfwidgetFormChoice getvalue


Sujet :

Symfony PHP

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

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 14
    Par défaut symfony 1.4 sfwidgetFormChoice getvalue
    j'ai une select box dans mon formulaire d'ajout d'une campagne marketing qui contient plusieurs supports de communication: radio, tv, presse, internet, affichage.
    après la sélection d'un support je doit afficher le formulaire imbriqué de ce support sélectionné.
    pour introduire l'un de ces formulaires j'ai utilisé embedForm, maintenant je doit choisir entre ces supports alors je veux mettre un switch case sur la valeur sélectionné dans la select box.
    comment puis-je récupérer cette valeur?
    Merci.

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Par défaut
    alors si j'ai bien compris

    0: j'affiche mon formulaire commun

    1: on choisi le support de comm. Pour l'exemple radio.

    2: affichage du formulaire embedForm correspondant. Par exemple RadioForm.

    3: on valide

    =>traitement=>

    1: je récupère mes infos des inputs du formulaire; ici dans l'exemple c'est les valeurs communes et celles de radioForm

    2: je regarde la valeur de l'input support de comm:

    3: On traite les valeurs du form embed. Ici, je sais que support de com' est radio, alors je fais mes save du radioForm

    Ducoup je me rend compte que je n'ai pas compris ta question, pouvez vous reformuler s'il vous plait ? Est ce que j'ai compris le contexte ou pas?

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

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 14
    Par défaut
    oui vous avez bien compris le contexte sauf que la campagne aussi possède des champs à remplir aussi.
    Alors nous avons les champs standards du campagneForm et j'ajoute embedForm de radioForm, TvForm, PresseForm, internetForm et affichageForm selon le choix sélectionné dans le sfwidgetFormChoice (select box).
    par exemple si je selectionne radio il m'affiche le formulaire du radio c'est à dire je doit faire un embedForm pour radioForm.
    c'est le code que j'ai développer pour mieux comprendre:
    class CampagneForm extends BaseCampagneForm {

    public function configure() {
    unset($this['created_at'], $this['updated_at'], $this['support_id']);
    $this->widgetSchema->setLabels(array(
    'idclimat' => 'Climat'
    ));

    $this->setWidget('support', new sfWidgetFormChoice(array('choices' => array('' => 'Selectionner support', 'radio' => 'Radio', 'tv' => 'Tv', 'presse' => 'Presse', 'internet' => 'Internet', 'affichage' => 'Affichage'), 'default' => ''), array('onclick' => 'showonlyone(this.value)')));
    $this->validatorSchema['support'] = new sfValidatorChoice(array('choices' => array('' => 'Selectionner support', 'radio' => 'Radio', 'tv' => 'Tv', 'presse' => 'Presse', 'internet' => 'Internet', 'Affichage' => 'affichage'), 'required' => false));

    $radio = new Radio();
    $radio->Campagne = $this->getObject();
    $radioForm = new RadioForm($radio);

    $tv = new Tv();
    $tv->Campagne = $this->getObject();
    $tvForm = new TvForm($tv);

    $presse = new Presse();
    $presse->Campagne = $this->getObject();
    $presseForm = new PresseForm($presse);

    $affichage = new Affichage();
    $affichage->Campagne = $this->getObject();
    $affichageForm = new AffichageForm($affichage);

    $internet = new Internet();
    $internet->Campagne = $this->getObject();
    $internetForm = new InternetForm($internet);


    switch ($this->getValue('support')) {
    case "radio":
    $this->embedForm('radio', $radioForm);
    break;
    case "tv":
    $this->embedForm('tv', $tvForm);
    break;
    case "presse":
    $this->embedForm('presse', $presseForm);
    break;
    case "affichage":
    $this->embedForm('affichage', $affichageForm);
    break;
    case "internet":
    $this->embedForm('internet', $internetForm);
    break;
    }



    }

    }

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Par défaut
    utilise une balise [ CODE ] [ /CODE ] (sans les espaces) pour rendre ca plus présentable.

    je pense que dans un cas comme ca, il vaut mieux gérer le fait d'afficher ou non chaque sous formulaire en javascript en les incluants tous les 4 plutot que ta méthode car lors de la génération du formulaire tu ne sais pas quelle valeur de ta liste déroulante l'utilisateur va choisir

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

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2012
    Messages : 14
    Par défaut
    j'ai fait ça dans le module campagne:
    campagne/templates/_form.php:



    <?php use_stylesheets_for_form($form) ?>
    <?php use_javascripts_for_form($form) ?>

    <form action="<?php echo url_for('campagne/' . ($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; ?>
    <table>
    <tfoot>
    <tr>
    <td colspan="2">
    &nbsp;<a href="<?php echo url_for('campagne/index') ?>">Back to list</a>
    <?php if (!$form->getObject()->isNew()): ?>
    &nbsp;<?php echo link_to('Delete', 'campagne/delete?id=' . $form->getObject()->getId(), array('method' => 'delete', 'confirm' => 'Are you sure?')) ?>
    <?php endif; ?>
    <input type="submit" value="Save" />
    </td>
    </tr>
    </tfoot>
    <tbody>
    <?php echo $form['_csrf_token'] ?>
    <tr>
    <th><?php echo $form['refcamp']->renderLabel() ?>:</th>
    <td>
    <?php echo $form['refcamp']->renderError() ?>
    <?php echo $form['refcamp'] ?>
    </td>
    </tr>
    <tr>
    <th><?php echo $form['idclimat']->renderLabel() ?>:</th>
    <td>
    <?php echo $form['idclimat']->renderError() ?>
    <?php echo $form['idclimat'] ?>
    </td>
    </tr>
    <tr>
    <th><?php echo $form['datedebut']->renderLabel() ?>:</th>
    <td>
    <?php echo $form['datedebut']->renderError() ?>
    <?php echo $form['datedebut'] ?>
    </td>
    </tr>
    <tr>
    <th><?php echo $form['datefin']->renderLabel() ?>:</th>
    <td>
    <?php echo $form['datefin']->renderError() ?>
    <?php echo $form['datefin'] ?>
    </td>
    </tr>
    <tr>
    <th><?php echo $form['coutinsert']->renderLabel() ?>:</th>
    <td>
    <?php echo $form['coutinsert']->renderError() ?>
    <?php echo $form['coutinsert'] ?>
    </td>
    </tr>

    <tr>
    <th><?php echo $form['support']->renderLabel() ?>:</th>
    <td>
    <?php echo $form['support'] ?>
    </td>

    </tr>
    <tr>
    <td colspan="2" rowspan="4">
    <div id="vide" class="newboxes" style=" display: none;height:120;">
    </div>
    <div id="radio" class="newboxes" style=" background-color: #FFF; display: none;height:120;">
    <?php echo $form['radio']->render() ?>

    </div>
    <div id="tv" class="newboxes" style=" background-color: #FFF; display: none;height:120;">
    <?php echo $form['tv']->render() ?>

    </div>
    <div id="presse" class="newboxes" style=" background-color: #FFF; display: none; height:120;">
    <?php echo $form['presse']->render() ?>
    </div>
    <div id="internet" class="newboxes" style=" background-color: #FFF; display: none;height:120;">
    <?php echo $form['internet'] ?>

    </div>
    <div id="affichage" class="newboxes" style=" display:none; background-color: #FFF; height:120;">
    <?php echo $form['affichage'] ?>
    </div>


    </td>
    </tr>
    <script type="text/javascript">
    function showonlyone(thechosenone) {
    $('.newboxes').each(function() {
    if ($(this).attr("id") == thechosenone) {
    $(this).slideDown(1);
    }
    else {
    $(this).hide(1);
    }
    });
    }
    </script>
    </tbody>
    </table>
    </form>


    est ce que c'est juste comme ça?

Discussions similaires

  1. [1.x] symfony 1.4 sfwidgetFormChoice radio button getvalue
    Par houcine88 dans le forum Symfony
    Réponses: 2
    Dernier message: 22/01/2013, 10h15
  2. Getvalue, setvalue pour du texte
    Par duranton dans le forum wxWidgets
    Réponses: 1
    Dernier message: 19/04/2006, 16h13
  3. XMLCursor.GetValue et les espaces
    Par catialin dans le forum XMLRAD
    Réponses: 2
    Dernier message: 09/12/2005, 11h08
  4. Problème ou normal : Boolean / GetValue ?
    Par mchicoix dans le forum XMLRAD
    Réponses: 11
    Dernier message: 14/11/2005, 23h27
  5. pb utilisation de getvalue
    Par didier.cabale dans le forum XMLRAD
    Réponses: 2
    Dernier message: 01/02/2005, 14h50

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