2010-11-13 6 views
0

Cela peut paraître comme une question de codage non lié, mais il est directement lié:PHP: l'héritage logique (étend)

Les faits: J'ai développé un site web (avec symfony) qui permet aux joueurs de rechercher un équipe (comme un tableau d'emploi). Il ne fait qu'un seul module. Je veux que le site web soit encore plus précis et fasse un formulaire personnalisé pour chaque joueur en fonction du jeu (par exemple, pour ceux qui jouent "league of legends" ils auront 3 autres informations à remplir ....)

Les solutions?

Je développe actuellement 1 module par jeu afin de prendre en compte les critères spécifiques pour des jeux spécifiques.

Avantages: Le joueur entre les informations en relation avec son jeu et ne voit pas/interagir les autres critères

: Désavantages 90% du code sont les mêmes entre chaque module. Cela prend plus de temps.


  • héritage

Je ne ai jamais joué avec ça avant donc je ne sais pas s'il est possible dans mon cas en tenir à 1 module pour toute la collection de jeu et en prenant en considération les critères spécifiques pour les jeux. Dans ce cas, cela signifierait avoir 1 modèle par jeu et afficher le modèle avec les bons accesseurs comme ($this->getCV()->getPseudo();/$this->getCV()->getGame()->getSpecificCriteria1();)

+2

semble raisonnable, ne pas se répéter est toujours une bonne idée. mais quelle est ta question? :) – Nicolas78

+0

Si l'héritage me permet de garder 1 module pour tous les jeux que j'ai: p –

Répondre

1

Si j'ai lu votre question, vous voulez afficher des champs supplémentaires pour chaque jeu spécifique .

Solution 1

créer un processus 2 de forme. Après votre premier formulaire, vous pouvez rediriger l'utilisateur vers un deuxième formulaire qui dépend de ses réponses. Pour ce faire, dans votre premier formulaire, utilisez une redirection pour envoyer l'utilisateur à un second formulaire spécifique au jeu.

Solution 2

Transmettez le nom du jeu au modèle et montrent une partielle sur mesure pour les champs de formulaire supplémentaires. Pour cela, vous aurez besoin d'une URL avec un paramètre de jeu comme celui-ci:

www.example.com/form/show/:game_identifier

Ensuite, dans votre action, lisez le paramètre et le transmettre à votre modèle. Dans le modèle, affichez une partie dépendante du jeu qui a été passé. Donc, ne montrer que les champs supplémentaires si un jeu spécifique a été choisi avant la main.

Il existe d'autres façons d'accomplir cela, mais ces 2 sont ressorties en premier.

+0

merci, cela confirme ce à quoi je pensais (rendre les partiels en fonction des jeux) –