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 10/04/2011, 18h18   #1
Membre habitué
 
Avatar de Niki59
 
Homme
Développeur Web
Inscription : mai 2008
Messages : 212
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 23
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2008
Messages : 212
Points : 136
Points : 136
Par défaut Le widget sfWidgetFormDoctrineChoice

Bonjour,

J'utilise le widget sfWidgetFormDoctrineChoice pour afficher une liste déroulante sur un formulaire.

Le problème c'est que cette déroulante possède la balise <optgroup> que je n'arrive pas à supprimer. Et je n'ai rien trouvé coté documentation.

De plus, je souhaite mettre une mettre une des options en pré-selectionné. Mais sans succès.

Voici mon code :
Code :
1
2
3
4
5
6
7
8
9
/* Classe du formulaire */
  public function configure()
  {
    $this->widgetSchema['position'] = new sfWidgetFormDoctrineChoice(array(
      'model' => 'EntrepriseEmploye',
      'method' => 'getFormChoiceRelationPosition',
      'key_method' => 'getPosition',
    ));
  }
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/* Mon modèle */
class EntrepriseEmploye extends BaseEntrepriseEmploye
{
    public function getRelationPosition()
    {
      $q = Doctrine_Query::create()
        ->from('EntrepriseEmploye q')
        ->where('q.Entreprise_id = ?', $this->getEntrepriseId())
        ->orderBy('q.position ASC');
      return $q->execute();
    }
    public function getFormChoiceRelationPosition()
    {
      $positions = $this->getRelationPosition();
      $nbPositions = $positions->count();
      for($i = 1 ; $i<= ($nbPositions + 1); $i++) {
          $array[$i] = $i;
      }
      return $array;
    }
}
Code :
1
2
3
4
5
6
/* Mon action.class.php */
  public function executeNew(sfWebRequest $request)
  {
    $this->form = new EntrepriseEmployeForm();
	$this->form->setDefault("EmployePosition", array(1));
  }
J'ai bien trouvé ce sujet là
http://www.developpez.net/forums/d98...te-deroulante/

Mais je vous avouerai que j'ai pas bien compris la solution

Si quelqu'un avait une explication ca serait sympa. Merci

- - - - - - - - - - - - - - - - - - - - -

Bon ben en farfouillant le code source du widget j'ai compris pourquoi il faisait ca, du coup je me suis rabattu vers le widget sfWidgetFormChoice et j'ai renseigner la paramètre "choices".
Niki59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2011, 11h01   #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
Deux choses :

Génération de la liste. Je n'ai jamais eu de <optgroupe> dans ma liste. Je me rappel avoir lu qu'il était possible de le faire, mais pas "naturellement" et je ne sais plus comment... Il faudrait pouvoir voir le code de la méthode getFormChoiceRelationPosition() pour voir ce qu'elle retourne.


Pour avoir une option par défaut, cela dépend de ce que tu appel "par défaut". Est-ce pour un nouvel enregistrement (new) ou l'affichage de la valeur pour un enregistrement existant ?
__________________
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é Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h35.


 
 
 
 
Partenaires

Hébergement Web