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

Zend_Form PHP Discussion :

[1.9.4] mettre une valeur par défaut au formulaire ne permet pas de l'afficher


Sujet :

Zend_Form PHP

  1. #1
    Membre habitué

    Homme Profil pro
    Concepteur d'applications web
    Inscrit en
    Avril 2003
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Concepteur d'applications web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2003
    Messages : 102
    Points : 136
    Points
    136
    Par défaut [1.9.4] mettre une valeur par défaut au formulaire ne permet pas de l'afficher
    Bonjour,

    j'explore Zend_Form et je me heurte à un souci : mettre une valeur par défaut dans un champ.
    dans la méthode init de mes Forms, j'ai tenté d'utiliser element->setValue(), element->setDefault() et même le populate... sans succès.

    En fait si je fait un getValue( NomDeMonElement ), je récupère bien la valeur setté par setValue ou setDefault, mais dans l'interface graphique, rien n'est affiché. L'attribut "value" de l'élément reste désespéremment vide.

    Que faut il faire ? je ne trouve rien dans la doc à ce sujet...

    Merci

  2. #2
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 40
    Points : 44
    Points
    44
    Par défaut
    Allo,

    Je me pose une question : se pourrait-il que tu fasses ton setDefault sur le mauvais objet? Moi, je le fais sur le formulaire, pas sur l'élément...

    Essaie voir?

  3. #3
    Membre habitué

    Homme Profil pro
    Concepteur d'applications web
    Inscrit en
    Avril 2003
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Concepteur d'applications web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2003
    Messages : 102
    Points : 136
    Points
    136
    Par défaut
    mon explication était un peu rapide, mais je peux te confirmer que je faisais bien element->setValue(value) ou form->setDefault(name, value).

    En fait j'ai l'impression que je faisais un isValid à la fin de mon controller avec des datas vides ce qui modifiait toutes les valeurs du formulaire.

    Je check et je ferme si ok.

  4. #4
    Membre habitué

    Homme Profil pro
    Concepteur d'applications web
    Inscrit en
    Avril 2003
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Concepteur d'applications web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2003
    Messages : 102
    Points : 136
    Points
    136
    Par défaut
    apparemment c'était ça, mais du coup, y a t il moyen de faire un isValid( data ) sans que cela ne réaffecte les valeurs de data dans le formulaire ?

  5. #5
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 40
    Points : 44
    Points
    44
    Par défaut
    hmmm... je n'arrive pas à reproduire ton bug

    Un petit script et jeu de test stp?

  6. #6
    Membre habitué

    Homme Profil pro
    Concepteur d'applications web
    Inscrit en
    Avril 2003
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Concepteur d'applications web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2003
    Messages : 102
    Points : 136
    Points
    136
    Par défaut
    voici donc un exemple de script :

    1) le formulaire :
    class Form_Test extends Zend_Form
    {
    /**
    * init() is the initialization routine called when Zend_Form objects are
    * created. In most cases, it make alot of sense to put definitions in this
    * method, as you can see below. This is not required, but suggested.
    * There might exist other application scenarios where one might want to
    * configure their form objects in a different way, those are best
    * described in the manual:
    *
    * @see http://framework.zend.com/manual/en/zend.form.html
    * @return void
    */
    public function init()
    {
    $this->setMethod('post')
    ->setAttrib('id', 'TestForm')
    ->addElement(
    'text', 'label', array(
    'validators'=>array( 'Alpha',
    array('stringLength', null, array(1, 9) ),
    ),
    'required'=>true,
    'label'=>'label'
    )
    )
    ->addElement(
    'hidden', 'languageId', array(
    'validators'=>array('Digits'),
    'required'=>false,
    )
    )
    ->addElement(
    'submit', 'submit', array(
    'label' => 'Envoyer',
    ) )
    ;
    }
    }
    2) le template
    <?= $this->testForm ?>
    3) le controler
    class TestController extends Zend_Controller_Action
    {

    public function init()
    {
    /* Initialize action controller here */
    }

    public function indexAction()
    {
    // action body
    $form = new Form_Test() ;

    $form->setDefault( 'label', 1234 ) ;

    $this->view->testForm = $form ;
    }
    }
    4) le test à réaliser :
    pré-requis : ZendFramework 1.9.4, php5.3, un projet ZendFramework ayant pour nom monAppliZend et se trouvant dans le répertoire 'monAppliZend' du DocumentRoot de son serveur Web, pas de virtualHost
    tâche : ouvrir son navigateur sur l'url http://localhost/monAppliZend/public/test/
    résultat attendu : affichage d'un formulaire avec 1 seul champ dont la valeur par défaut est 1234

    Conclusion : c'est ok chez moi...

    Par contre si je rajoute un isValid( array() ) après le setDefault() et bien ça réaffecte mon tableau vide à tous mes champs qui deviennent donc vide. Je n'avais pas vu cette nuance avant.
    Le fait qu'il réaffecte les valeurs passées en paramètre peut être carrément génant si on a plusieurs formulaire sur la même page. En effet, on a pas de moyen d'identifier le formulaire qui a été posté et si on a des champs avec les même label, le fait de faire un isValid va affecter les valeurs concernés à tous les champs identiques... Il faut donc ajouter dans le formulaire un champ ayant pour paramètre le nom du formulaire, puis avant de faire le isValid, tester quel formulaire est concerné.

Discussions similaires

  1. [1.x] Mettre une valeur par défaut à un filtre
    Par jfsenechal dans le forum Symfony
    Réponses: 5
    Dernier message: 13/01/2011, 17h10
  2. Mettre une valeur par défaut dans un input type='file'
    Par fab76000 dans le forum Langage
    Réponses: 2
    Dernier message: 27/01/2009, 19h59
  3. Réponses: 10
    Dernier message: 04/11/2008, 14h30
  4. Réponses: 4
    Dernier message: 05/06/2007, 09h16
  5. mettre une valeur par défaut
    Par oolon dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/12/2006, 17h20

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