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 24/11/2011, 09h33   #1
Membre à l'essai
 
Homme Jonathan
Inscription : décembre 2010
Messages : 41
Détails du profil
Informations personnelles :
Nom : Homme Jonathan
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : décembre 2010
Messages : 41
Points : 20
Points : 20
Par défaut Modifier l'option 'query' du sfWidgetFormDoctrineChoice

Bonjour,
Es ce que ce possible modifier la requête de l'option 'query' du widget sfWidgetFormDoctrineChoice dans l'action? On fait, ma liste des choix doit être diffèrente selon un critère choisir auparavant donc, la requête associer à la option 'query' n'est pas toujours la même. J'ai essayer le code ci-dessous mais ça ne fonctionne pas:
Code :
1
2
3
4
5
6
7
8
9
 
public function executeAjouter(sfWebRequest $request)
    {
        $this->formTache = new TacheForm();
$query = Doctrine_Query::create()->from('Tache t')->where('t.id_activite = ?', $this->getUser()->getAttribute('idActiviteSelectionee'));
$this->formTache->setOption('query', $query);
 
        return $this->renderPartial('form', array('formTache' => $this->formTache));
    }
Après avoir passer pour cette action, j'ai toujours dans mon widget le résultat de la requête défini dans le modèle.

Merci d'avance.
jotatan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 09h58   #2
Membre chevronné
 
Avatar de kenny.kev
 
Homme
Inscription : janvier 2007
Messages : 574
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France, Indre et Loire (Centre)

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

Informations forums :
Inscription : janvier 2007
Messages : 574
Points : 688
Points : 688
Envoyer un message via MSN à kenny.kev
Bonjour,

Passez la valeur lors de la création du formulaire et passez lui la valeur à votre sfWidgetFormDoctrineChoice()

Pour les formulaire 99% tout ce que vous souhaitez faire ce fait dans la classe form (la dans ce cas c'est TacheForm()).
kenny.kev est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/11/2011, 10h13   #3
Membre à l'essai
 
Homme Jonathan
Inscription : décembre 2010
Messages : 41
Détails du profil
Informations personnelles :
Nom : Homme Jonathan
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : décembre 2010
Messages : 41
Points : 20
Points : 20
Merci pour votre réponse. Donc, si j'ai bien compris je doit surcharger le constructeur de ma classe form pour lui dire que dans certaines cas il auras une paramètre, et ce paramètre je l'utilise lors de la construction de mon sfWidgetFormDoctrineChoice. Ou tous ça c'est automatique et je dois juste passer ma requête au constructeur de ma classe form?

Code :
1
2
 
$this->formTache = new TacheForm($query);
Si je dois surcharger le constructeur, ou je dois le faire? dans la function configure de ma classe form?

Merci
jotatan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 10h31   #4
Membre chevronné
 
Avatar de kenny.kev
 
Homme
Inscription : janvier 2007
Messages : 574
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France, Indre et Loire (Centre)

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

Informations forums :
Inscription : janvier 2007
Messages : 574
Points : 688
Points : 688
Envoyer un message via MSN à kenny.kev
Normalement dans le lib\form\doctrine tu as une liste de tous les formulaires de ton projet.

Tous ces fichiers sont la pour que tu puisse customiser le formulaire comme pour ton cas.

Je te redirige vers ce lien car ufretin indique comment faire cela :
http://www.developpez.net/forums/d11...ormulaire-new/
kenny.kev est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/11/2011, 11h26   #5
Membre à l'essai
 
Homme Jonathan
Inscription : décembre 2010
Messages : 41
Détails du profil
Informations personnelles :
Nom : Homme Jonathan
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : décembre 2010
Messages : 41
Points : 20
Points : 20
ça y est on fait je n'ai pas besoin de redéfinir le constructeur car ils on trois paramètres par défaut et celui qui m'intèrese est le seconde donc je fait comme ça dans mon action:

On est obligé à mettre null comme premier paramètre parceque le constructeur prends celui ci lors du bind avant l'enregistrement. C'est le seconde qui sera utiliser pour les options.
Code :
1
2
3
4
5
6
7
 
public function executeAjouter(sfWebRequest $request)
    {
     $query = Doctrine_Query::create()->from('Tache t')->where('t.id_activite = ?', $this->getUser()->getAttribute('idActiviteSelectionee'));
 
      $this->formTache = new TacheForm(null, array('query' => $query));
      ...
et comme ça dans ma classe formulaire:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
class TacheForm extends BaseTacheForm
{
  public function configure()
  {
      $query = $this->getOption('query');
      $this->setWidgets(
                               array(
                                       'id_tache_parent'     => new sfWidgetFormDoctrineChoice(
                                            array(
                                                'model' => $this->getRelatedModelName('Tache'),
                                                'add_empty' => true,
                                                'query' => $query
                                                )
.....
et ça fonctionne nickel.

Merci beaucoup
jotatan est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h54.


 
 
 
 
Partenaires

Hébergement Web