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 :

passer des parametres au formulaire "new" de symfony


Sujet :

Symfony PHP

  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 8
    Points : 5
    Points
    5
    Par défaut passer des parametres au formulaire "new" de symfony
    Bonjour,
    Je travail sur un projet avec l'admin generator de symfony,
    J'ai une liste des pubs,et Mon probleme est quand je clique sur le lien "new" pour ajouter un nouveau pub je dois passer des variables à mon nouveau formulaire pour qu'il seront stocké dans la base de données sans que l'utilisateur les saisis.
    est ce que LinktoNew prend des objets??
    aperçu de la liste:
    -----------------------------------------------------
    pub affiché +++++++++++++++++ new
    -----------------------------------------------------
    new +++++++++++++++++ new
    -----------------------------------------------------
    new +++++++++++++++++ new
    -----------------------------------------------------

    Par exmple
    -si je clique sur le new en vert j'aurais le formulaire d'ajout avec les attributs location="right" sequence=2
    -si je clique sur le new en rouge j'aurais le formulaire d'ajout avec les attributs location="left" sequence=3

    Pour ensuite les affiché dans le tableau comme "pub affiché"==>location="left" sequence=1


    Merci d'avance
    HELP

  2. #2
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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
    Points : 8 486
    Points
    8 486
    Par défaut
    Le générateur d'administration est, relativement, limité dans ces possibilités.

    Je ne pense pas que tu puisses l'utiliser pour réaliser ce que tu veux, sauf à modifier presque tous les composants, tout en restant limité dans les modifications que tu veux apporter par le carcan de l'admin générator.

    A mon avis, tu as intérêt à créer ton propre module.

    Reste une autre possibilité, celle d'utiliser, dans ton form, une liste déroulante ou des boutons radios pour sélectionner ce que tu veux faire, et à modifier ton objet du modèle pour créer une fausse variable avec un set et un get et récupérer les informations. Moins top que les deux boutons où liens, mais plus simple à implémenter dans un admin générator.
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  3. #3
    Futur Membre du Club
    Inscrit en
    Décembre 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci pour votre réponse M.Rotta

    en fait j'ai pu resoudre mon probleme en changeant mon lien "new" comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sequence=2; $location="RIGHT";
     
     <a href="<?php echo url_for('advertising/newWithParams?sequence='.$sequence.'& location='.$location); ?>">Nouveau</a>
    Ensuite j'ai créer l'action de newWithParams:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public function executeNewWithParams(sfWebRequest $request) {
    $this->reflexadvertising = new reflexAdvertising ( );
    $this->reflexadvertising->setSequence ( $request->getParameter('sequence') );
    $this->reflexadvertising->setLocation ( $request->getParameter('location') );
     
    $this->form = $this->configuration->getForm ( $this->reflexadvertising );
    $this->setTemplate ( 'new' );
    }
    et dans mon formulaire J'ai déclarer mes champs comme etant "hidden" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $this->widgetSchema ['sequence'] = new sfWidgetFormInputHidden ( );
    $this->widgetSchema ['location'] = new sfWidgetFormInputHidden ( );
    Je recupére les variables:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $varSequence = $this->getObject ()->getSequence ();
    $varLocation = $this->getObject ()->getLocation ();
    j'affecte ces variable à mes champs "hidden" comme des valeur par defaut grace à setOptiond:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->setOption ( 'default', array ('sequence' => $varSequence, 'location' => $varLocation ) );
    et enfin je rajoute les champs 'sequence' et 'location' à useFields

    et ça marche

  4. #4
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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
    Points : 8 486
    Points
    8 486
    Par défaut
    Pas mal.

    A mon avis, tu pourrais même améliorer, tu n'as pas réellement besoins des données dans le formulaire, vu qu'elles reviennent dans le lien. Je me demande si tu ne pourrais pas te passer de tes deux champs cachés.

    Attention à ce que ton action modifiée puisse bien entrée dans contexte général de fonctionnement du générateur d'administration, notamment pour ce qui est du renvoie d'un formulaire non correctement validé.
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  5. #5
    Futur Membre du Club
    Inscrit en
    Décembre 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci pour votre reponse
    Quand j'enleve les champs hidden ca marche pas
    en fait quand je clique sur nouveau il m'affiche le formulaire et il me recupere les valeurs des parametres mais une fois je clique sur "save" je recupere plus ces variables...je suis debutant en php5 et en symfony peut c'est à cause d'une erreure bête de ma part.

    pour votre remarque:
    Attention à ce que ton action modifiée puisse bien entrée dans contexte général de fonctionnement du générateur d'administration, notamment pour ce qui est du renvoie d'un formulaire non correctement validé.


    J'ai pas bien compris mais la validation de mon formulaire marche...par exemple si je laisse des champs vides il me signale des messages 'invalid' :s

  6. #6
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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
    Points : 8 486
    Points
    8 486
    Par défaut
    Effectivement, si tu ne passes pas les données par des champs cachés, il va falloir les mettre à jour dans l'objet du modèle, avant de le lier au form. Il est plus simple de les passer dans le form en champs cachés. Attention toute fois aux champs cachés, il sont très peu caché et facilement modifiable par un utilisateur indélicat. Il importe bien de ce questionner sur ce qu'il pourrait ce passer si ces données étaient modifiées volontairement par un pirate.

    Pour le deuxième point, il faut s'assurer que les enchainements entre liste et détail et vis versa ce passent bien.
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    Bonjour! j'ai cherché moi aussi et j'essaye d'apporter modestement ma pierre à l'édifice :-)

    La solution pour passer des paramètres de l'action au model ! (sans passer par des champs "hidden" !!! )


    //in the action , use the second paramater of the form constructor
    $this->form = new Form(null, array('myCustomVar' => $var));

    //in the form
    $var = $this->getOption('myCustomVar');

    source : http://oldforum.symfony-project.org/index.php/t/26845/

    bonne journée!

  8. #8
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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
    Points : 8 486
    Points
    8 486
    Par défaut
    Bonjour et bienvenu sur le forum.

    Bon, c'est une sortie de discutions des archives, mais vu qu'elle n'y était presque pas enfoncées...

    Je ne suis pas sur que ce que tu fasses ainsi réponde à la question posée. En effet, dans le code que tu donnes, tu transferts des données à un form. Et la date du message donné en référence (04/2008) me ferait plutôt pense à du symfony 1.1 avec des méthodologie qui ne fonctionnent plus ou sont dépassée en 1.4.

    Je pense que les propositions faîtes plus haut reste les meilleurs, en 1.4 s'entends
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

Discussions similaires

  1. [1.x] Passer des parametres au formulaire "new"
    Par llaffont dans le forum Symfony
    Réponses: 3
    Dernier message: 23/11/2011, 15h38
  2. passer des parametres d`un formulaire JSP vers un servlet
    Par lucaazori1988 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 29/12/2009, 20h10
  3. [script SQL]comment passer des parametres a un scrip sql?
    Par la7su dans le forum Langage SQL
    Réponses: 5
    Dernier message: 23/03/2005, 10h55

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