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/06/2011, 09h12   #1
Invité de passage
 
laurent bertin
Inscription : août 2010
Messages : 8
Détails du profil
Informations personnelles :
Nom : laurent bertin

Informations forums :
Inscription : août 2010
Messages : 8
Points : 3
Points : 3
Par défaut remplir les valeurs d'une liste dans un form selon une des valeurs passées

Bonjour

Le titre est ronchon mais voici le problème.

En gros il s'agit de s'inscrire à un evenement. Dans ce formulaire d'inscription je passe l'utilisateur et l'evenement mais je voudrais que la liste des dates ne contienne que les dates comprise entre la date de debut de l'evenement et la date de fin.

Dans mon action j'ai ceci:
Code :
1
2
3
4
5
6
7
8
9
10
11
 
$eventuser = new EventUser();
 
  	$eventuser->setEventId($request->getParameter('id'));
  	$eventuser->setUserId($this->getUser()->getGuardUser()->getId());
  	$event = EventTable::getinstance()->find($request->getParameter('id'));
 
 
  	$this->event = Doctrine_Core::getTable('Event')->getEvent($request->getParameter('id'));
 
    $this->form = new CustomEventUserForm($eventuser);
la liste des dates provient de l'objet event:
Code :
$this->event->getDatesArray()
j'ai essayé quelques trucs comme
Code :
1
2
$schema = $this->form->getWidgetschema();
    $schema['date'] = new sfwidgetformchoice(array('choices' =>$this->event->getDatesArray() ));
qui me remplit bien les dates mais qui semble faire une erreur dans la fonction create
Code :
$this->processform ($request, $this->form);
Ensuite j'ai essayer ainsi :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
Action:
$eventuser = new EventUser();
 
 
  	$event = EventTable::getinstance()->find($request->getParameter('id'));
 
  	$eventuser->setEvent($event);
  	$eventuser->setUserId($this->getUser()->getGuardUser()->getId());
 
 
 
  	$this->event = Doctrine_Core::getTable('Event')->getEvent($request->getParameter('id'));
 
    $this->form = new CustomEventUserForm($eventuser);
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
class EventUserForm extends BaseEventUserForm
{
  public function configure()
  {
 
 
    $this->setWidgets(array(
      'id'            => new sfWidgetFormInputHidden(),
      'event_id'      => new sfWidgetFormDoctrineChoice(array('model' => $this->getRelatedModelName('Event'), 'add_empty' => false)),
      'user_id'       => new sfWidgetFormDoctrineChoice(array('model' => $this->getRelatedModelName('sfGuardUser'), 'add_empty' => true)),
      'reserving_for' => new sfWidgetFormInputText(),
 
      'ispaid'        => new sfWidgetFormInputCheckbox(),
      'isconfirmed'   => new sfWidgetFormInputCheckbox(),
 
    ));
	$event = $this->object->Event;
 
    $schema = $this->getWidgetschema();
    $schema['date'] = new sfwidgetformchoice(array('choices' => $event->getDatesArray() ));
 
 
    $this->setValidators(array(
      'id'            => new sfValidatorChoice(array('choices' => array($this->getObject()->get('id')), 
      	'empty_value' => $this->getObject()->get('id'), 'required' => false)),
      'event_id'      => new sfValidatorDoctrineChoice(array('model' => $this->getRelatedModelName('Event'))),
      'user_id'       => new sfValidatorDoctrineChoice(array('model' => $this->getRelatedModelName('sfGuardUser'), 'required' => false)),
      'reserving_for' => new sfValidatorInteger(array('required' => false)),
      'date'          => new sfValidatorChoice(array('choices' => array($event->getDatesArray()),'required' => false)),
      'ispaid'        => new sfValidatorBoolean(array('required' => false)),
      'isconfirmed'   => new sfValidatorBoolean(array('required' => false)),
 
    ));
 
    $this->widgetSchema->setNameFormat('event_user[%s]');
 
    $this->errorSchema = new sfValidatorErrorSchema($this->validatorSchema);
 
    $this->setupInheritance();
  }
}
qui lui ne me remplit rien...

(et vous l'aurez bien compris je suis un peu débutant)
a+
perdu_bxl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2011, 10h01   #2
Membre habitué
 
Avatar de Nico_F
 
Homme Nicolas
Développeur Web
Inscription : avril 2011
Messages : 95
Détails du profil
Informations personnelles :
Nom : Homme Nicolas
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : Communication - Médias

Informations forums :
Inscription : avril 2011
Messages : 95
Points : 142
Points : 142
Alors je ne suis pas sur d'avoir tout compris, on va reprendre progressivement.

Dans un premier temps j'ai compris que tu voulais remplir un form avec des valeurs ... mais je ne vois nulle part la fonction bind() que l'on retrouve assez fréquemment lorsqu'on parle de formulaires.

D'ou ma première question, ne serait-ce pas tout simplement cette méthode qu'il te faut découvrir afin de réaliser ce que tu veux à savoir peupler ton formulaire pour ensuite l'enregistrer ? Jette un œil sur la doc symfony pour voir si ça colle.

Ensuite j'ai cru comprendre qu'il fallait comparer des dates. Et pour ça il va falloir faire appel à un post-validator.

Tu pourras trouver les deux points en exemple sur cette page.

http://www.symfony-project.org/forms...orm-Validation
Nico_F est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2011, 23h36   #3
Invité de passage
 
laurent bertin
Inscription : août 2010
Messages : 8
Détails du profil
Informations personnelles :
Nom : laurent bertin

Informations forums :
Inscription : août 2010
Messages : 8
Points : 3
Points : 3
Par défaut la reponse

...
je suis mauvais...

Je faisais mes tests sur le eventuserform et j'appelle le CustomEventform... oui, c'etait tellement gros que je ne suis pas le seul à l'avoir vu

En gros ce que je voulais est, lors de ma declaration, récupèrer les dates disponibles pour l'evenement où j'inscris la personne et que cela soit publié directement dans le formulaire (pas d'ajax, l'evenement ne peut pas être changé dans le formulaire)

Ce que j'obtiens par
Code :
1
2
3
4
5
6
7
8
 
 
// je recupère l'evenement que j'ai passé
$event = $this->object->Event;
 
// je crée le widget et le remplis des dates
    $schema = $this->getWidgetschema();
    $schema['date'] = new sfwidgetformchoice(array('choices' => $event->getDatesArray() ));
Désolé pour l'arrachage de cheveux pour rien, etant quasi chauve vous aurez déjà bien compris pourquoi...
perdu_bxl 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 04h44.


 
 
 
 
Partenaires

Hébergement Web