salut a tous !!!
Voici mon problème.
J'ai une table article ->id, prix, titre...
J'ai une table size -> id, name
J'ai une table article_has_size -> article_id, size_id
Donc un article peut avoir plusieur taille et une taille peut etre dans plusieur article[m:m]
J'ai bien crée ma bdd en écrivant toute les relations
[ j'ai mis :dans la config de mon form "article" qui me permet donc de sélectionner les tailles dispo pr mon article]
Code : Sélectionner tout - Visualiser dans une fenêtre à part this->widgetSchema['size_list']->setOption('renderer_class', 'sfWidgetFormSelectDoubleList');
Tout marche bien.
La ou je coince c'est que j'ai besoin de créée un "petit formulaire" avec une liste deroulante des "size" dispo pour l'article que je visionne.
Dc ds l'action "show" de mon article je met:
Et pour la configuration de mon formulaire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public function executeShow(sfWebRequest $request) { $this->article =$article= Doctrine_Core::getTable('article')->find(array($request->getParameter('id'))); $this->form = new commandeForm($this->article); $this->forward404Unless($this->article); }
Maintenant j'affiche la liste de toute ma table "size" mais je ne vois pas comment charger uniquement les "size" lier a mon article....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 <?php class CommandeForm extends ArticleForm { public function configure() { $this->setWidgets(array( 'size_list' => new sfWidgetFormDoctrineChoice(array('multiple'=>false, 'model'=> 'Size')), 'quantity' => new sfWidgetFormChoice(array( 'choices' => self::generateTwoCharsRange(1,50), 'expanded' => false, )), )); $this->widgetSchema->setNameFormat('commande[%s]'); $this->setValidators(array( 'size_list' => new sfValidatorNumber(array('required' => true)), 'quantity' => new sfValidatorNumber(array('required' => true)), )); } static function generateTwoCharsRange($start, $stop) { $results = array(); for ($i = $start; $i <= $stop; $i++) { $results[$i] = sprintf('%02d', $i); } return $results; } }
Je pense que sa doit etre simple ... mais je connais pas l'astuce...
Merci bien![]()
Partager