IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

[Doctrine] Admin - Relations


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 32
    Points : 34
    Points
    34
    Par défaut [Doctrine] Admin - Relations
    Salut,
    J'ai un petit problème tout con, tout simple, que vous allez pouvoir résoudre en 2 temps 3 mouvements mais qui sous symfony me bloque complètement. Je débute :-)
    J'explique en simplifiant:

    J'ai 3 tables
    -article : id, title
    -content : id, text
    -content_link_article : id, article_id, content_id (en foreignKeys)

    Dans mon administration, je voudrais pouvoir créer des articles et des contenus.
    Chaque article peut possèder 1 ou plusieurs contenus.
    Chaque contenu peut être liés à 1 ou plusieurs articles.

    J'ai donc créé 2 modules, article, et contenu, logique.


    Mon problème est le suivant:
    Comment afficher sur la page de création de contenu, la liste des articles (sous forme de liste checkboxable...) qui pourront ainsi être liés.
    Si je n'avais pas eu la table contentLinkArticle il n'y aurait pas eu de problème, symfony aurait tout géré tout seul mais là... chais pô comment les récupérer.
    J'imagine que ça doit se trouver dans lib/model/doctrine/contentlinkarticle.class.php... et autre content.class.php... mais humm... pis comment récupérer mes infos pour les afficher ensuite? Il faut encore passer par le generator.yml dans ce cas là?


    Une autre petite question en passant:
    Quand je crée un contenu, que je met du texte dedans... et pourquoi pas un lien href, alors lorsque je souhaite le visualiser dans mon frontend, le lien ou tout autre balise html n'est pas interpreté et n'est donc pas cliquable. Le code apparait, ce qui n'est pas top.


    Voilà, "c'est tout, pour le moment", merci d'avoir pris le temps me lire et surement répondu

  2. #2
    Membre expérimenté Avatar de nathieb
    Homme Profil pro
    DevOps
    Inscrit en
    Mai 2004
    Messages
    1 058
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DevOps
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 058
    Points : 1 532
    Points
    1 532
    Par défaut liaison ManyTOMany
    Bonjour,

    Dans la documentation tu as un exemple, sinon dans askeet aussi. Si tu utilises le generator.yml tu peux utiliser la classes

    edit:
    fields:
    article_author: { type: admin_double_list, params: through_class=ArticleAuthor }

    Dans la doc symfony lien http://www.symfony-project.org/book/1_0/14-Generators

    il y a les lignes de codes que je viens de pomper .

    essaye déjà de plaquer cette solution et de mieux comprendre le fonctionnement.

    Question 2 :
    Une autre petite question en passant:
    Quand je crée un contenu, que je met du texte dedans... et pourquoi pas un lien href, alors lorsque je souhaite le visualiser dans mon frontend, le lien ou tout autre balise html n'est pas interpreté et n'est donc pas cliquable. Le code apparait, ce qui n'est pas top.

    Je ne comprends pas, peux tu reformuler voir donner un exemple merci

    olivier
    Architecte destructurant,
    be cool, be free

    Il nous reste Debian bien sûr

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 32
    Points : 34
    Points
    34
    Par défaut
    Merci nathieb, c'est exactement ce que je cherchais mais malheureusement pour le moment ça ne marche pas. En fait ça ne m'affiche rien.

    J'ai modifié mon generator.yml pour:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    edit:
      fields:
        tw_content_link_article: { type: admin_check_list, params: through_class=TwContentLinkArticle }
    Bon en même temps je ne comprends pas trop comment ça pourrait marcher avec leur exemple puisque que je ne dis nul part ce que je veux obtenir... En tout cas ce que je veux c'est exactement leur screenshot. Va falloir fouiller la dedans.


    Pour la question 2 je reformule:
    En fait ce que je souhaite avoir c'est un petit générateur de contenu... enfin juste la possibilité de modifier tout les textes et les images d'un site internet à partir de l'administration. Et donc il arrive fréquemment... si ce n'est sur toutes les pages que l'on doivent créer un lien dans un texte.

    Donc dans l'administration je crée mon contenu, et j'édite le champ texte.
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ceci est mon texte bla blablalba et voici un lien: <a href='http://www.google.com'>mon lien</a>.
    Jusque là on est d'accord, donc j'enregistre.
    Sauf que lorsque je vais sur mon site pour visualiser le texte que je viens d'éditer et bien je me retrouve avec exactement la même chose. c'est à dire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ceci est mon texte bla blablalba et voici un lien: <a href='http://www.google.com'>mon lien</a>.
    Donc le lien n'est pas cliquable.
    Ce que je voudrais juste savoir c'est comment faire pour que symfony n'inhibe pas mon code html.

  4. #4
    Membre expérimenté Avatar de nathieb
    Homme Profil pro
    DevOps
    Inscrit en
    Mai 2004
    Messages
    1 058
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DevOps
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 058
    Points : 1 532
    Points
    1 532
    Par défaut lien
    Bonjour,

    Utilise le helper link_to() de symfony
    il te génère une <href ...> standard, dans les templates tu peux coder comme un barbare si tu veux, a l'ancienne quoi. Il existe par contre, parfois des pb de routing d'ou l'utilisation de url_for() qui est aussi un helper de symfony.

    Par contre, il me semble pas que symfony 'rende les liens inactifs' ??


    olivier
    Architecte destructurant,
    be cool, be free

    Il nous reste Debian bien sûr

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 32
    Points : 34
    Points
    34
    Par défaut
    Recoucou, je commence à m'arracher les cheveux avec ce problème de liaisons many-to-many.

    Précédemment si rien ne s'affichait c'est parce que je ne demandais pas l'affichage de mon widget, du coup maintenant je me retrouve avec ça dans mon generator.yml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    edit:
            display: [tw_content_link_article, description, container, published, text]
            fields:
              tw_content_link_article: { type: admin_check_list, params: through_class=TwContentLinkArticle }
    Jusque là normalement tout est bon.
    Le problème est que lorsque je demande l'affichage de la page d'édition de contenu je me tape comme réponse:
    Widget "tw_content_link_article" does not exist.

    et je ne comprends pas pourquoi.

    Pour le fun je colle la partie qui nous intéresse de mon 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
    TwArticle:
      actAs:               { Timestampable: ~ }
      columns:
        category_id:       { type: integer, notnull: true }
        title:             { type: string(255), notnull: true }
        meta_description:  { type: string(255) }
        meta_keywords:     { type: string(255) }
        meta_robots:       { type: string(255) }
        meta_author:       { type: string(255) }
     
      relations:
        TwCategory:        { onDelete: CASCADE, onUpdate: CASCADE, local: category_id, foreign: id }
     
    TwContentLinkArticle:
      columns:
        article_id:        { type: integer, notnull: true }
        content_id:        { type: integer, notnull: true }
      relations:
        TwArticle:         { onDelete: CASCADE, onUpdate: CASCADE, local: article_id, foreign: id }
        TwContent:         { onDelete: CASCADE, onUpdate: CASCADE, local: content_id, foreign: id }
     
    TwContent:
      actAs:               { Timestampable: ~ }
      columns:
        description:       { type: string(255), notnull: true }
        container:         { type: string(255), notnull: true }
        published:         { type: integer, notnull: true }
        text:              { type: string(4000), notnull: true }
    Merci de m'aider ça devient horrible là.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 32
    Points : 34
    Points
    34
    Par défaut
    Ok, j'ai trouvé.
    En fait le problème venait du fait que les relations étaient faites dans la table TwContentLinkArticle et non TwContent et TwArticle.
    Il faut jouer avec les options class et refClass de l'attribut relations.

    Après une refonte de mon schema.yml tout est donc rentré dans l'ordre.

    En tout cas merci Nathieb tu m'as bien aidé.
    A la prochaine!

  7. #7
    Membre expérimenté Avatar de nathieb
    Homme Profil pro
    DevOps
    Inscrit en
    Mai 2004
    Messages
    1 058
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DevOps
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 058
    Points : 1 532
    Points
    1 532
    Par défaut De rien
    Bonjour,

    De rien, je ne t'ai qu'écouté et guidé .

    olivier
    Architecte destructurant,
    be cool, be free

    Il nous reste Debian bien sûr

  8. #8
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 74
    Points : 58
    Points
    58
    Par défaut Probleme du meme type
    Bonjour,

    J'ai le même problème que asmodaiii, j’essaie de faire une liaison Many to Many avec l'admin generator mais je ne comprend pas exactement comment le problèmes à été résolu.

    J'ai une table recyclage, une table departement et une table recyclage_departement. Le but est de pouvoir lié plusieurs département à chaque recyclage dans l'admin generator.

    J'ai créé les clé étrangères :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ALTER TABLE `recyclage_departement`
      ADD CONSTRAINT `fk_departement` FOREIGN KEY (`idDepartement`) REFERENCES `departement` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
      ADD CONSTRAINT `fk_recyclage` FOREIGN KEY (`idRecyclage`) REFERENCES `recyclage` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION;

    Et modifier mon fichier generator.yml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            display: [nom, siteweb, idrecyclage]
            fields:
              idrecyclage: { type: admin_check_list, params: through_class=RecyclageDepartement }
    Pour infos voici mon fichier schema :

    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
     
    Departement:
      connection: doctrine
      tableName: departement
      columns:
        id:
          type: integer(4)
          fixed: false
          unsigned: false
          primary: true
          autoincrement: true
        nom:
          type: string(255)
          fixed: false
          unsigned: false
          primary: false
          notnull: false
          autoincrement: false
        numero:
          type: string(1)
          fixed: false
          unsigned: false
          primary: false
          notnull: false
          autoincrement: false
        article:
          type: string(45)
          fixed: false
          unsigned: false
          primary: false
          notnull: true
          autoincrement: false
      relations:
        RecyclageDepartement:
          local: id
          foreign: iddepartement
          type: many
     
    Recyclage:
      connection: doctrine
      tableName: recyclage
      columns:
        id:
          type: integer(4)
          fixed: false
          unsigned: false
          primary: true
          autoincrement: true
        nom:
          type: string(255)
          fixed: false
          unsigned: false
          primary: false
          notnull: false
          autoincrement: false
        siteweb:
          type: string(255)
          fixed: false
          unsigned: false
          primary: false
          notnull: false
          autoincrement: false
      relations:
        RecyclageDepartement:
          local: id
          foreign: idrecyclage
          type: many
     
     
    RecyclageDepartement:
      connection: doctrine
      tableName: recyclage_departement
      columns:
        id:
          type: integer(4)
          fixed: false
          unsigned: false
          primary: true
          autoincrement: true
        iddepartement:
          type: integer(4)
          fixed: false
          unsigned: false
          primary: false
          notnull: false
          autoincrement: false
        idrecyclage:
          type: integer(4)
          fixed: false
          unsigned: false
          primary: false
          notnull: false
          autoincrement: false
      relations:
        Recyclage:
          local: idrecyclage
          foreign: id
          type: one
        Departement:
          local: iddepartement
          foreign: id
          type: one
    Lors de l’édition j'ai l'erreur "Widget "idrecyclage" does not exist."

    Quelqu'un sait comment je dois nommer le champ ou me guider, le tutoriel officiel n'est pas très étoffé par les relations Many to Many.

    Merci de votre aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/08/2013, 01h02
  2. [2.x] [Doctrine] héritage + relations
    Par damiensan dans le forum Symfony
    Réponses: 0
    Dernier message: 10/07/2013, 16h45
  3. Réponses: 3
    Dernier message: 31/01/2012, 19h04
  4. [1.x] Doctrine: Admin generator, ajouter un critère à la requete
    Par arotra dans le forum Symfony
    Réponses: 6
    Dernier message: 30/09/2009, 12h59
  5. [Doctrine] Admin generator tri sur un partial field
    Par espaceVirtuel dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 04/08/2009, 14h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo