J'utilise ezplatform et j'essaie de comprendre comment partager automatiquement le contenu commun de cms sur toutes les pages sans écrire de contrôleur séparé pour chaque vue.Contenu commun dans toutes les vues d'un contrôleur de base symfony partagé
Ceci est un simple extrait du fichier YML:
root_folder:
controller: "AppBundle:Homepage:homepage"
match:
Id\Location: 58
article_container:
controller: "AppBundle:ArticleContainer:articleContainerChildren"
match:
Identifier\ContentType: "article_container"
article_one_column:
template: "full/article_one_column.html.twig"
match:
Identifier\ContentType: "article_one_column"
Ce sont trois matchs simples pour y propres contrôleurs personnalisés, à l'exception du dernier.
Les deux premières correspondances touchent un contrôleur qui étend un contrôleur de base. Dans le contrôleur de base, nous avons un rendu standard fonction qui est appelée comme ceci:
return $this->render(
'full/article_container.html.twig',
[
'location' => $location,
'content' => $currentContent,
'articles' => $articles,
'articleLocations' => $locations,
]
);
Le dit rend la fonction ressemble à ceci:
$parameters = array_merge($parameters, [
'main_navi' => $navigation,
'mega_navi_data' => $navigation,
'quotes' => $contentRenderer->getQuotesData(),
'featured_articles' => $contentRenderer->getFeaturedArticles(),
'contact_form' => $this->getContactForm(),
]);
return parent::render($view, $parameters, $response);
Comme vous pouvez le voir, nous fusionnons simplement les params d'origine avec certaines données communes dont toutes les pages ont besoin. Ces données sont utilisées pour le "maga navi" et le contenu du pied de page.
Le problème est maintenant que lorsque nous essayons de charger une page article_one_column
, car cela n'utilise pas un contrôleur personnalisé, il ne donc charge pas les données communes nécessaires à l'en-tête et pied de page qui se traduit par une erreur de brindille.
QUESTION: Comment pouvons-nous fournir un contenu commun à toutes les routes sans écrire un contrôleur personnalisé pour chaque type de données?
Comme note pour n'importe qui trouvant ceci. Si vous avez l'intention d'utiliser des contrôleurs personnalisés et souhaitez également utiliser cet événement pré-rendu (ce qui est génial). Sachez que votre contrôleur personnalisé (s'il appelle simplement le rendu std) ne déclenche pas automatiquement cet événement et vous devez l'appeler manuellement. Le rendu de vue Std du coeur d'ez bien sûr déclenche l'événement ... serait cool s'il y avait une méthode simple à appeler pour déclencher tous les événements std lors d'un rendu simple à partir d'un contrôleur ... – John