Bonjour
J'aimerai afficher, lors de l'édition d'une séance depuis l'administration, à côté de chaque case à cocher de chaque activité, une liste déroulante permettant d'indiquer le nombre de vidéos requis pour la séance et l'activité.
Mon schéma :
Dans la page d'édition d'une séance, j'arrive à afficher la liste des activités sous forme de case à cocher :
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 Seance: columns: name: type: string(255) notnull: true Activite: columns: name: type: string(255) notnull: true relations: Seances: class: Seance refClass: SeanceActivite foreignAlias: Activites SeanceActivite: columns: seance_id: type: integer primary: true activite_id: type: integer primary: true nbvidrequis: type: integer relations: Seance: foreignAlias: SeanceActivites Activite: foreignAlias: SeanceActivites
Mon generator.yml >
Ma classe BackendSeanceForm >
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7generator: ... config: ... form: class: BackendSeanceForm ...
et le myWidgetFormSelectCheckboxTable.class.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 class BackendSeanceForm extends SeanceForm { public function configure() { $this->widgetSchema['activites_list'] = new sfWidgetFormDoctrineChoice(array( 'label' => 'Activités associées', 'multiple' => true, 'expanded' => true, 'model' => 'Activite', 'renderer_class' => 'myWidgetFormSelectCheckboxTable' )); } }
Seulement, je n'ai aucune idée sur le chemin a suivre pour ajouter les listes déroulantes pour chaque activités...
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 class myWidgetFormSelectCheckboxTable extends sfWidgetFormSelectCheckbox { public function formatter($widget, $inputs) { $rows = array(); $itemsPerRow = sfConfig::get('app_itemsperrow_checkbox'); $i=0; $rows[] = "<table>"; foreach ($inputs as $input) { if ($i % $itemsPerRow == 0) { $rows[] = "<tr>"; } $rows[] = $this->renderContentTag('td', $input['input'].$this->getOption('label_separator').$input['label']) ; $i++; if ($i % $itemsPerRow == 0) { $rows[] = "</tr>"; } } $rows[] = "</table>"; return !$rows ? '' : $this->renderContentTag('ul', implode($this->getOption('separator'), $rows), array('class' => $this->getOption('class'))); } }
Merci de m'aider svp.
Partager