Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > symfony
symfony Forum d'entraide sur le framework PHP symfony. Avant de poster : cours symfony et FAQ symfony
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/12/2010, 19h10   #1
Invité de passage
 
Hamza LAKHRISSI
Inscription : décembre 2010
Messages : 8
Détails du profil
Informations personnelles :
Nom : Hamza LAKHRISSI

Informations forums :
Inscription : décembre 2010
Messages : 8
Points : 0
Points : 0
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
miiizooo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2010, 18h17   #2
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
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 !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2010, 01h11   #3
Invité de passage
 
Hamza LAKHRISSI
Inscription : décembre 2010
Messages : 8
Détails du profil
Informations personnelles :
Nom : Hamza LAKHRISSI

Informations forums :
Inscription : décembre 2010
Messages : 8
Points : 0
Points : 0
Merci pour votre réponse M.Rotta

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

Code :
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 :
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 :
1
2
$this->widgetSchema ['sequence'] = new sfWidgetFormInputHidden ( );
$this->widgetSchema ['location'] = new sfWidgetFormInputHidden ( );
Je recupére les variables:
Code :
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 :
$this->setOption ( 'default', array ('sequence' => $varSequence, 'location' => $varLocation ) );
et enfin je rajoute les champs 'sequence' et 'location' à useFields

et ça marche
miiizooo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2010, 13h49   #4
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
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 !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2010, 14h30   #5
Invité de passage
 
Hamza LAKHRISSI
Inscription : décembre 2010
Messages : 8
Détails du profil
Informations personnelles :
Nom : Hamza LAKHRISSI

Informations forums :
Inscription : décembre 2010
Messages : 8
Points : 0
Points : 0
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
miiizooo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2010, 13h21   #6
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
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 !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/02/2011, 13h04   #7
Invité régulier
 
Inscription : février 2011
Messages : 13
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 13
Points : 5
Points : 5
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!
Mattyman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2011, 16h47   #8
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
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 !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h07.


 
 
 
 
Partenaires

Hébergement Web