Je construis une application simple en utilisant Symfony. La mise en page consiste en un corps principal avec des barres latérales gauche et droite. Les barres latérales contiennent plusieurs modules configurables par l'utilisateur.Comment remplir le contenu de la barre latérale dans une mise en page symfony?
Symfony fournit des fentes qui semblent être la bonne façon de remplir les barres latérales:
layout.php
<div id="left_sidebar">
<?php if (has_slot('left_sidebar')): ?>
<ul>
<?php include_slot('left_sidebar') ?>
</ul>
<?php else: ?>
<!-- default sidebar code -->
<?php endif; ?>
</div>
Pour remplir les fentes j'ai essayé d'utiliser un filtre. Le problème est que certains modules dans les sidebars dépendent de ce qui se passe dans les actions (mises à jour de catégorie, etc.). Ils doivent donc être générés après l'exécution de l'action.
msBootstrapFilter
class msBootstrapFilter extends sfFilter
{
public function execute($filterChain)
{
// Generating the sidebars at this point is TOO early
// as the content of some sidebars depends on the actions
// Execute next filter
$filterChain->execute();
// Generate the sidebars after running through all the code
// This is TOO LATE, the layout has been rendered
$this->generateSidebars();
}
}
Je ne veux pas ajouter un appel "run sidebar" à chaque action comme cela semble inflexible.
Quel est le meilleur point dans le flux d'événements Symfony pour générer le contenu de la barre latérale? Y a-t-il un événement approprié auquel je peux me connecter?
Merci pour la réponse. J'avais rejeté des composants plus tôt, et ils ne sont pas tout à fait adaptés à mon objectif. Mais votre commentaire a obligé à repenser ma stratégie et une nouvelle voie à suivre. – Tramov