Bonjour,

j'utilise l'admin generator pour le backend de mon projet. J'ai un module Person qui gère des utilisateurs. En plus de l'action _new je veux ajouter une action personnalisé qui me permette en plus d'initialiser une nouvelle personne, de renseigner son groupe et d'autres informations.

Voici le generator.yml :

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
38
39
40
41
42
43
44
45
46
47
48
49
50
generator:
  class: sfDoctrineGenerator
  param:
    model_class:           CcPerson
    theme:                 admin
    non_verbose_templates: true
    with_show:             false
    singular:              ~
    plural:                ~
    route_prefix:          cc_person
    with_doctrine_route:   true
    actions_base_class:    sfActions
 
    config:
      actions:
        _save: { label: Sauvegarder }
        _save_and_add: { label: Sauvegarder et répéter l'opération }
      fields:
        firstname:  { label: "Prénom" }
        lastname:   { label: "Nom" }
        email:      { label: "Adresse email" }
        arrivaldate:    { label: "Date arrivée" }
        departuredate:  { label: "Date départ" }
        gender:         { label: "Sexe" }
      list:
        title: Liste des agents
        display:  [firstname,lastname,email]
        sort:     [lastname,asc]
        max_per_page: 30
        actions:
          newPersonFull : { label: "Nouvel agent (avec groupes, crédits, droits)", action: newpersonfull }
          _new: { label: "Nouvel agent (simple ajout)" }
        batch_actions: {}
        object_actions:
          _edit:         ~
      filter:
        display:  [firstname, lastname, email, arrivaldate, departuredate]
      form:    ~
      edit:
        title: Modifier l'agent %%firstname%% %%lastname%%
        actions:
          _list:         ~
          _save:         ~
      new:
        title: Ajouter un nouvel agent
        display:  [firstname, lastname, gender, email, arrivaldate, departuredate]
        actions:
          _list:         ~
          _save:         ~
          _save_and_add:  ~
J'ai donc mon action newpersonfull que j'ajoute dans mon controller :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
class personActions extends autoPersonActions{
  public function executeNewpersonfull(sfWebRequest $request){
    $this->form = new CcPersonFullForm();
  }
}
Maintenant, je dois initilialiser mon formulaire CcPersonFullForm mais comme je veux via ce formulaire créer une nouvelle personne, je voudrais (si possible) ne pas réécrire ce qui est déjà disponible dans la classe BaseCcPersonForm.

  1. Que dois-je écrire dans CcPersonFullForm pour appeler les infos du formulaire de base ?
  2. Comment faire pour la vue ?


Voici mon formulaire qui ne marche pas.

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
<?php
class CcPersonFullForm extends CcPersonForm{
  public function configure(){
    parent::configure();
    $this->setWidgets(array(
      'membergroup_list'        => new sfWidgetFormDoctrineChoice(array('model' => 'CcGroup', 'multiple' => true)),
      'creditFractionnement'    => new sfWidgetFormInputText(array(), array('size' => 4)),
      'exerciceFractionnement'  => new sfWidgetFormInputText(array(), array('size' => 4)),
      'creditConges'            => new sfWidgetFormInputText(array(), array('size' => 4)),
      'exerciceConges'          => new sfWidgetFormInputText(array(), array('size' => 4))
    ));
 
    $this->widgetSchema->setLabels(array(
      'membergroup_list'        => "Membre des groupes",
      'creditFractionnement'    => "L'agent aura un droit potentiel à",
      'exerciceFractionnement'  => "jours de fractionnement pour l'exercice",
      'creditConges'            => "À son arrivée, l'agent obtient un solde de",
      'exerciceConges'          => "jours de congés annuels pour l'exercice"
    ));
 
    $this->setDefaults(array(
      'creditFractionnement'    => 2,
      'exerciceFractionnement'  => date('Y'),
      'creditConges'            => 45,
      'exerciceConges'          => date('Y')
    ));
 
    $this->setValidators(array(
      'membergroup_list'        => new sfValidatorDoctrineChoice(array('model' => 'CcGroup', 'required' => true, 'multiple' => true)),
      'creditFractionnement'    => new sfValidatorInteger(),
      'exerciceFractionnement'  => new sfValidatorInteger(),
      'creditConges'            => new sfValidatorInteger(),
      'exerciceConges'          => new sfValidatorInteger()
    ));
  }
}