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 19/07/2011, 11h03   #1
Invité de passage
 
JC 19
Inscription : mars 2010
Messages : 3
Détails du profil
Informations personnelles :
Nom : JC 19

Informations forums :
Inscription : mars 2010
Messages : 3
Points : 1
Points : 1
Par défaut Faire fonctionner plusieurs environnement de production

Bonjour,

Dans une logique d'industrialisation de mon développement, je souhaite partager un meme code entre plusieurs clients.

Je m'explique : J'ai développé une application que j'ai déposé sur un serveur. Pour chacun de mes clients je souhaite créer un environnement de production différents (duplication du fichier index.php en client1.php, client2.php, client3.php, ...).

Chacun de ses environnements tape dans une bdd différente (propre, donc, à chaque client)

Jusque là tout va bien. Les problèmes et question arrivent ensuite :

Je souhaite que chaque client arrive sur mon serveur via une url différente (de leur choix par exemple), que cette url m'emmene sur client1.php pour le 1er client... etc. Et que, bien sur, je n'ai pas besoin de saisir le "/client1.php/". Comment faire? (si je place chacun de mes 3 fichiers dans un sous répertoire de web et que j'active pour chaque environnement le paramètre "no_script_name" je me passe de la saisie du nom du fichier mais mes css et js ne sont pas chargé...) (Pour ce qui est de l'url différente, j'imagine que c'est une simple histoire de virtual host...?)

Deuxième problématique : Comment faire en sorte que les 3 clients utilisent bien le même code, excepté quand j'ai un client qui veut du spécifique sur tel ou tel module? Le plugun est-il la bonne solution ? Offre t-il beaucoup de souplesse ? Me contraint-il a créer une application par client (ce qui reviens a dupliquer mon code, ce que je ne souhaite pas) ? Dois-je "m'amuser" a faire de l'héritage sur toute mes classes ?

D'avance merci, j'espère ne pas vous avoir noyer avec toutes mes questions.
erung est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2011, 15h49   #2
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
Il est partiellement possible de gérer plusieurs fichiers index (index1.php, index2.php,... ) et de les lier avec des virtuals host.

Par contre, tu ne pourras pas avoir plusieurs sites "par défaut" dans symfony, donc tu devras utiliser derrière des URL du genre : http://www.monClient.com/index1.php/...in/bidule.html Ceci est a paramètrer dans la config de apache, donc il faut la main sur la config du serveur, ce qui limite les endroits où c'est utilisable.

De plus, ceci n'est envisageable que si tout tes sites sont une même application, sans aucune différences entre tes différents clients, exemple, un blog ou tu loues de l'hébergement pour un client pour son blog, mais tout les blog ont une structure applicative équivalente. Dans ce cas, les url aurait intérêt à ressembler à :monClient.blogEnVrac.com/articles

Dans ton cas, si tu veux des développement particulier sur certains clients, il sera plus intéressant de développer une application pour chaque client. Il ne te reste qu'à créer un plugin (ou plusieurs) avec la logique commune et à les utiliser dans tes applications.

Ce type de mise en œuvre est préconisé par sensio et plus souple à utiliser. Tu en as un exemple dans le tutoriel de symfony : JobeeJob.
__________________
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 26/07/2011, 09h44   #3
Invité de passage
 
JC 19
Inscription : mars 2010
Messages : 3
Détails du profil
Informations personnelles :
Nom : JC 19

Informations forums :
Inscription : mars 2010
Messages : 3
Points : 1
Points : 1
Bonjour,

Merci pour ta réponse Michel. Comme tu me l'a préconisé j'ai mis en place un plugin qui contient mes modules et mes filtre, form et model.

Le système de plugin est effectivement une bonne solution je pense; cependant, j'ai un problème : L'héritage est bien géré par défaut par symfony sur mes filtre, form et model, mais pas sur mes actions de modules, hors c'est essentiel pour moi si je dois faire du code spécifique ou ajouter de nouvelles actions pour un seul client.... Est-ce que j'ai raté quelque chose dans le tuto ou bien est ce normal? Comment palier à ce problème?

Merci encore pour ta réponse, et merci de continué à m'épauler

Cordialement
erung est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 13h25   #4
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
Regarde la manière dont est géré le plugin sfDoctrineGuard, il pourrait te donner des idées.
__________________
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 28/07/2011, 13h33   #5
Invité de passage
 
JC 19
Inscription : mars 2010
Messages : 3
Détails du profil
Informations personnelles :
Nom : JC 19

Informations forums :
Inscription : mars 2010
Messages : 3
Points : 1
Points : 1
Ok donc si je comprend bien le fonctionnement du plugin sfDoctrineGuard je créé un module dans mon application du même nom que ceux déclarés dans mon plugin; je créé le actions.class.php dans le répertoire actions, et j'adapte le code ci-dessous a mes besoins... ? me trompe-je ?

Code :
1
2
3
4
5
6
7
8
9
<?php   require_once(sfConfig::get('sf_plugins_dir').'/sfDoctrineGuardPlugin/modules/sfGuardAuth/lib/BasesfGuardAuthActions.class.php');
 
class sfGuardAuthActions extends BasesfGuardAuthActions
{
    public function executeNewAction()
    {
        return $this->renderText('This is a new sfGuardAuth action.');
    }
}
erung est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/07/2011, 17h19   #6
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
Oui, c'est pas ultra propre, mais ceci me semble être la seul bonne méthode.
__________________
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é Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h24.


 
 
 
 
Partenaires

Hébergement Web