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 19/05/2011, 21h37   #1
Candidat au titre de Membre du Club
 
Inscription : avril 2008
Messages : 47
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 47
Points : 11
Points : 11
Par défaut Accéder à un attribut dans un formulaire

Bonsoir,

Je suis paumé, mais pas loin de la solution, je le sens.

Dans mon actions.class.php, j'ai :
Code :
1
2
3
4
5
6
7
8
9
10
11
  public function executeNew(sfWebRequest $request)
  {
	//Je crée un objet DataProfile 
	$dp = new DataProfile();
 
	//Je cherche la valeur, ici avec id=1
	$this->forward404Unless($dp = Doctrine::getTable('DataProfile')->find(1), sprintf('Object file_profile does not exist'));
 
	//Je passe l'objet DataProfile dans le formulaire FileProfileForm
    $this->form = new FileProfileForm(array(),array('currentDataProfile',$dp));
  }
et dans le formulaire, j'ai :
Code :
1
2
3
4
5
6
7
8
9
10
  public function configure()
  {
 
	$x = $this->getOption('currentDataProfile')->getUserId();
 
	unset(
		$this['created_at'],$this['updated_at']
		);
 
  }
Mais j'ai une erreur :
Code :
Fatal error: Call to a member function getUserId() on a non-object
Dans le contrôleur, j'ai vérifié, la fonction $dp->getUserId() fonctionne très bien.

Mais dans le formulaire, cette même fonction ne passe pas

Note, j'ai aussi tenté un :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
  public function configure()
  {
	$x = new DataProfile();
 
	$x = $this->getOption('currentDataProfile');
 
	$y = $x->getUserId();
 
	unset(
		$this['created_at'],$this['updated_at']
		);
 
  }
Qui ne fonctionne pas mieux

Est-ce que quelqu'un peut m'aider ?

Merci
vincent.le est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2011, 00h26   #2
Candidat au titre de Membre du Club
 
Inscription : avril 2008
Messages : 47
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 47
Points : 11
Points : 11
Hop, après quelques heures, j'ai UNE solution, comme un grand.

En fait, quand je passe un objet dans l'option d'un formulaire, alors celui-ci est traité comme un tableau.

on n'y accède alors directement par $x('attribut'), et non par $x->getAttribut()

dans mon exemple, j'aurai alors :
Code :
1
2
3
4
5
6
7
8
9
10
  public function configure()
  {
 
	$x = $this->getOption('user_id');
 
	unset(
		$this['created_at'],$this['updated_at']
		);
 
  }
et je peux simplifier le action.class :
Code :
1
2
3
4
5
6
7
8
9
public function executeNew(sfWebRequest $request)
  {
 
	//Je cherche la valeur, ici avec id=1
	$this->forward404Unless($dp = Doctrine::getTable('DataProfile')->find(1), sprintf('Object file_profile does not exist'));
 
	//Je passe l'objet DataProfile dans le formulaire FileProfileForm
    $this->form = new FileProfileForm(array(),$dp);
  }
vincent.le est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2011, 09h42   #3
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
Je veux bien.

Mais que diable vient faire cet objet dans les options d'un form ? Je n'ai jamais eu besoin d'une tel construction (ni jamais vu). Ma curiosité est exacerbée.
__________________
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 19h53.


 
 
 
 
Partenaires

Hébergement Web