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 12/10/2011, 13h25   #1
Membre du Club
 
Homme
Étudiant
Inscription : juin 2011
Messages : 94
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : juin 2011
Messages : 94
Points : 48
Points : 48
Par défaut Partial avec un morceau de code variable

Bonjour,
j'ai dans mon appli différents listings: articles, tutoriaux, etc...
Le template étant très similaire selon le type de liste, j'ai utilisé un partial global. Grosso modo le code du partial est du genre:

Code :
1
2
3
4
5
6
7
8
9
10
 
<?php foreach($elements as $element):?>
  <div class="div1" >
    <?php echo $element->$myfunction();?>
  </div>
  <div class="div2">
    <!-- du code ici -->
  </div>
  <!-- encore plein de code soit commun à tous, soit du genre de celui dans div1-->
<?php endforeach;?>
Pour div1 et le reste pas de problème je passe comme suit dans mon template
Code :
1
2
 
<?php include_partial('global/monpartial',array('elements'=>$variable,'myfunction'=>'getProperty');
Par contre dans div2 je dois utiliser du code différent:
-des fois je n'affiche pas div2
-cela peut être un lien du genre
Code :
<?php echo link_to('monlien',$element) ?>
-voir même
Code :
 <?php echo sfMyFunctions::abracadabra($element->$myfunction() ?>
Y a t'il un moyen d'avoir une partie variable dans un partial?
Peut être un slot mais est ce possible de les définir dans le template en utilisant des variables qui existeront dans le partial ? (cas de $element)

Merci
johnbenz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2011, 14h29   #2
Nouveau Membre du Club
 
Inscription : septembre 2010
Messages : 62
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 62
Points : 37
Points : 37
Dans l'attente d'une réponse de quelqu'un de plus experimenté je vais te dire ce que moi j'aurais fait (mais c'est ptet pas la façon la plus propre)

J'aurais tout simplement géré ça avec des conditions dans le partial, en passant des variables qui définissent ces conditions au partial.
zoreol est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/10/2011, 15h00   #3
Membre du Club
 
Homme
Étudiant
Inscription : juin 2011
Messages : 94
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : juin 2011
Messages : 94
Points : 48
Points : 48
Merci pour ta réponse, pour l'instant c'est ce que j'ai fait.
Si qqu'un connait une manière propre pour résoudre ce problème ?
johnbenz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2011, 13h59   #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
Si tu n'as pas à accéder à la couche modèle, ce qui impliquerait un passage par celle du contrôleur, c'est la bonne méthode. Du moins tant que le code n'est pas illisible.

Si non, c'est qu'il faut tout repenser depuis le départ (peut-être même depuis l'appel du form).
__________________
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 24/10/2011, 15h09   #5
Membre du Club
 
Homme
Étudiant
Inscription : juin 2011
Messages : 94
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : juin 2011
Messages : 94
Points : 48
Points : 48
Citation:
Envoyé par Michel Rotta Voir le message
Si tu n'as pas à accéder à la couche modèle, ce qui impliquerait un passage par celle du contrôleur, c'est la bonne méthode. Du moins tant que le code n'est pas illisible.
Non j'ai juste eu à mettre 3 if() pour gérer les 3 rendus possibles, ça reste lisible mais je suis à la limites.
Citation:
Envoyé par Michel Rotta Voir le message
Si non, c'est qu'il faut tout repenser depuis le départ (peut-être même depuis l'appel du form).
Non c'est pas pour un form, c'est pour une pagination.
En gros j'utilise le même design pour paginer une liste d'articles, de personnes, d'objets etc... donc j'ai utilisé un partial.

dans mon partial je fais un truc du genre:
Code :
1
2
3
4
5
6
7
8
9
10
11
 
$elements = $pager->getResults();
 
<?php foreach ($elements as $element)?>
du html ...
 
<!-- la partie qui change -->
<span><?php echo $element->$function() ?></span>  <!-- pour un article -->
<!-- pour une personne -->
<a href="<?php url_for('mon_url',$element->$function())?>" >$element->$function()</a>
etc...
où $function est transmise selon le type d'élément à mon partial
array('function'=>'getTitle') pour un article
array('function'=>'getGroup') pour une personne
etc...
johnbenz 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 04h41.


 
 
 
 
Partenaires

Hébergement Web