Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > symfony
symfony Forum d'entraide sur le framework PHP symfony. Avant de poster : cours symfony et FAQ symfony
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/05/2011, 11h31   #1
Membre chevronné
 
Avatar de Herode
 
Développeur Web
Inscription : mars 2005
Messages : 769
Détails du profil
Informations personnelles :
Localisation : France, Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mars 2005
Messages : 769
Points : 788
Points : 788
Par défaut Insertion de PHP dans un fichier .yml

Bonjour à tous,

je souhaite rendre dynamiques certains réglages d'un fichier generator.yml, en fonction de la configuration de l'application.

Le code suivant fonctionne :
Code :
1
2
3
4
5
6
7
8
9
 
      edit:
        title: Modifier la catégorie %%name%%
        display:
          Informations générales: [_admin_dates, name, tag, page_template_id, enabled]
          Référencement: [meta_title, meta_description, meta_keywords]
          <?php echo sfConfig::get('app_adminForms_enableAssociationTexts', 0) ?  "Textes d'association: [LinksToParentCategories]" : ""; ?>
#          Textes d'association: [LinksToParentCategories]
          Catégories parentes: [newParentCategory, _parent_categories]
Notez la ligne en commentaires après l'appel au code PHP. Malheureusement, si je supprime cette ligne, l'application plante :
Citation:
Unable to parse file "C:\wamp\www\SoulShake\Sources\apps\backend/modules/category/config/generator.yml": Unable to parse line 49 ( Catégories parentes: [newParentCategory, _parent_categories]).
Comment faire pour avoir un .yml qui compile sans cette ligne de commentaires inutile ?
Herode est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2011, 11h45   #2
Membre chevronné
 
Avatar de Herode
 
Développeur Web
Inscription : mars 2005
Messages : 769
Détails du profil
Informations personnelles :
Localisation : France, Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mars 2005
Messages : 769
Points : 788
Points : 788
Ha tiens, je viens de m'apercevoir que le plantage ci-dessus n'a lieu que si le test du echo renvoie false (donc echo ""). S'il renvoie true et fait un écho différent d'une chaîne vide, ça ne plante pas.

Poursuivant sur cette voie, j'ai essayé le code :
Code :
1
2
3
4
5
6
7
      edit:
        title: Modifier la catégorie %%name%%
        display:
          Informations générales: [_admin_dates, name, tag, page_template_id, enabled]
          Référencement: [meta_title, meta_description, meta_keywords]
          <?php echo sfConfig::get('app_adminForms_enableAssociationTexts', 0) ?  "Textes d'association: [LinksToParentCategories]" : "#\n"; ?>
          Catégories parentes: [newParentCategory, _parent_categories]
qui, lui, ne plante jamais. Notez l'ajout d'un "#\n" au lieu de la chaîne vide si le test de l'echo renvoie false.

Comme quoi poser des questions aide à progresser sur le voie de la solution, même si le problème n'est pas tout à fait idéalement résolu...
Herode est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2011, 20h37   #3
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
Très bonne l'idée de mettre du code PHP dans le generator. Très intéressant.

Question bis, ceci ne sera "compilé" et régénéré que si le cache est vidé...

Tu envisages de le gérer comment ?
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2011, 09h37   #4
Membre chevronné
 
Avatar de Herode
 
Développeur Web
Inscription : mars 2005
Messages : 769
Détails du profil
Informations personnelles :
Localisation : France, Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mars 2005
Messages : 769
Points : 788
Points : 788
Dans le cas que je gère en ce moment, il s'agit d'une application qui sera paramétrée à la livraison et le paramétrage ne changera pas par la suite. Donc pas de cache initialement, et vidage de cache classique à la console si jamais par improbable la configuration installée doit changer.

Par contre, si la gestion du generator.yml était vraiment dynamique avec des lignes activées ou désactivées selon les actions de l'utilisateur... hum...
On peut toujours appeler dans notre code les mêmes actions que le cc de symfony mais ça risque d'être lourd et de rendre les affichages assez longs si on vide le cache souvent. A priori, je pense que dans ce cas, je ne travaillerais pas dans generator.yml mais dans plutôt les fichiers classiques (templates, css, js). Non ?
Herode est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2011, 11h08   #5
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
En effet, on sort là du cadre du générateur.

De plus, cela reviendrait à regénérer le module presque à la volée et pour chaque utilisateur (si les droits étaient différents).

Il reste une possibilité. Comme tout est légo dans symfony, le générateur d'application est un ensemble de pièces. Il est alors possible de réécrire une partie du code de génération et de le rendre dynamique.

Une autre solution pourrait de gérer cela au niveau du configure() du form et de conditionner l'apparition des widget et des validator. Mais il faudrait alors laisser le generator vide pour le détail des champs... Si non, il va tenter d'afficher un champ inexistant et c'est l'erreur assurée.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h14.


 
 
 
 
Partenaires

Hébergement Web