Hello,

J'utilise l'admin generator pour un projet, mon modèle de données a des relations n:n.
Il y a une table 'function' et une table 'method', entre les 2 il y a la table 'fct_mpay'.

schema.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
51
52
53
54
55
56
57
58
59
60
61
 
propel:
  _attributes:
    package: lib.model
  category:
    _attributes: {phpName: DemoCategory, idMethod: native }
    CAT_ID: { type: INTEGER, required: true, autoIncrement: true, primaryKey: true }
    CAT_LABEL: { type: VARCHAR, size: '50' }
    CAT_ORDER: { type: INTEGER }
  fct_mpay:
    FCT_ID: { type: INTEGER, required: true, primaryKey: true, foreignTable: function, foreignReference: FCT_ID, onDelete: CASCADE}
    MPAY_ID: { type: INTEGER, required: true, primaryKey: true, foreignTable: paymentmethod, foreignReference: MPAY_ID, onDelete: CASCADE}
  meth_fld:
    METH_ID: { type: INTEGER, required: true, primaryKey: true, foreignTable: method, foreignReference: METH_ID, onDelete: CASCADE}
    FLD_ID: { type: VARCHAR, size: '50', required: true, primaryKey: true, foreignTable: field, foreignReference: FLD_ID, onDelete: CASCADE}
    METH_FLD_ORDER: { type: INTEGER }
    METH_FLD_REQUIRED: { type: INTEGER }
    METH_FLD_MODIF: { type: INTEGER }
  field:
    _attributes: {phpName: DemoFormField }
    FLD_ID: { type: VARCHAR, size: '50', required: true, primaryKey: true }
    FLD_LABEL: { type: VARCHAR, size: '50' }
    FLD_DESC: { type: VARCHAR, size: '255' }
    FLD_TYPE: { type: VARCHAR, size: '25' }
  function:
    _attributes: {phpName: DemoFunction, idMethod: native }
    FCT_ID: { type: INTEGER, required: true, autoIncrement: true, primaryKey: true }
    CAT_ID: { type: INTEGER, foreignTable: category, foreignReference: CAT_ID }
    METH_ID: { type: INTEGER, foreignTable: method, foreignReference: METH_ID }
    FCT_LABEL: { type: VARCHAR, size: '80' }
    FCT_DESC: { type: VARCHAR, size: '80' }
    FCT_URLDEMO: { type: VARCHAR, size: '255' }
    FCT_URLVIDEO: { type: VARCHAR, size: '255' }
    FCT_ORDER: { type: INTEGER }
  method:
    _attributes: {phpName: DemoMethod, idMethod: native }
    METH_ID: { type: INTEGER, required: true, autoIncrement: true, primaryKey: true }
    METH_LABEL: { type: VARCHAR, size: '25' }
    METH_DESC: { type: VARCHAR, size: '80' }
    METH_URL: { type: VARCHAR, size: '255' }
    METH_POPUP: { type: VARCHAR, size: '255' }
    METH_LOGIN: { type: VARCHAR, size: '50' }
    METH_KEY: { type: VARCHAR, size: '50' }
  paymentmethod:
    _attributes: {phpName: Paymentmethod, idMethod: native }
    MPAY_ID: { type: INTEGER, required: true, autoIncrement: true, primaryKey: true }
    MPAY_LABEL: { type: VARCHAR, size: '40' }
    MPAY_CARDNB: { type: VARCHAR, size: '20' }
    MPAY_LASTNAME: { type: VARCHAR, size: '50' }
    MPAY_FIRSTNAME: { type: VARCHAR, size: '50' }
    MPAY_EXPIR: { type: VARCHAR, size: '4' }
    MPAY_CRYPTO: { type: INTEGER }
    MPAY_BIRTHDATE: { type: VARCHAR, size: '6' }
    MPAY_LOGIN: { type: VARCHAR, size: '50' }
    MPAY_PWD: { type: VARCHAR, size: '25' }
    MPAY_CONTRACTS: { type: VARCHAR, size: '50' }
  value:
    _attributes: {phpName: DemoValue }
    FCT_ID: { type: INTEGER, required: true, primaryKey: true, foreignTable: function, foreignReference: FCT_ID }
    FLD_ID: { type: VARCHAR, size: '50', required: true, primaryKey: true, foreignTable: field, foreignReference: FLD_ID }
    VAL_VAL: { type: VARCHAR, size: '255' }
Quand j'édite une 'fonction' je veux pouvoir lui associer un moyen de paiement (payment_method).
J'ai réussi à le faire en utilisant 'admin_check_list' avec le code suivant dans le fichier generator.yml :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
    edit:
      display: [cat_id, meth_id, fct_id, fct_label, fct_desc, fct_urldemo, fct_urlvideo, fct_order, fct_mpay, value]
      fields:
        fct_mpay:   {name: 'Moyens de paiement', type: admin_check_list, params: through_class=FctMpay }
Ce code fonctionne parfaitement.

Maintenant, je voudrais rendre possible l'édition des valeurs des champs (table 'value' ) qui représente également une relation n:n entre la table 'function' et la table 'field' avec le champ supplémentaire 'val_val' qui contient la valeur d'un champ (table field) pour une fonction donnée (table function).

Par ailleurs, j'ai essayé d'utiliser le mot clé 'onDelete:Cascade' dans schema.yml mais je ne connais pas son utilisation.
Par exemple, lorsqu'un moyen de paiement (de la table payment_method) est supprimé, la/les lignes correspondantes (avec le même ID) dans 'fct_mpay' doivent être supprimées.

J'ai cherché sur la doc de propel mais leur site semble inaccessible.

Merci d'avance pour votre aide,

Kévin