2009-03-04 8 views
16

Comment définir différentes mises en page de modèles pour différents modules dans Symfony? J'ai une application bancaire composée d'un écran de connexion et d'une section membre. Donc, quand un utilisateur va sur mon site, il sera présenté avec un écran de connexion. Après s'être connecté, il sera redirigé vers la section membre pour pouvoir faire ses besoins bancaires. Alors, comment définir différentes dispositions pour l'écran de connexion et les pages à l'intérieur de la section membre? Symfony semble utiliser frontend/templates/layout.php comme modèle pour TOUTES les pages. Est-il possible de définir différentes dispositions?Comment définir différentes mises en page de modèles pour différents modules dans Symfony

Répondre

42

Oui, vous pouvez définir des dispositions distinctes par vue (ou désactiver complètement la disposition). Pour ce faire, vous devez créer (ou éditer, si vous l'avez déjà) le fichier view.yml dans le répertoire/config de votre module. Vous pouvez définir la disposition à utiliser pour toutes les vues du module ou pour chaque vue séparément. Par exemple:

#in /apps/my_app/modules/my_module/config/view.yml 

#this will apply custom_layout to all views of the module 
all: 
    layout: custom_layout 

#this will apply login_layout to the loginSuccess view 
loginSuccess: 
    layout: login_layout 

#disable layout for this view 
homeSuccess: 
    has_layout: false 

Dans tous les cas, la mise en page est le fichier dans votre application répertoire/templates (avec .php en annexe). Si vous ne définissez aucune directive de mise en page dans le fichier de configuration de vue du module, la mise en page par défaut sera utilisée.

-1

Ou si vous êtes à l'intérieur des actions, vous pouvez utiliser simplement:

$this->setLayout('name_file_layout_without_extension'); 

Et après, vous pouvez travailler sur le modèle que vous utilisez à l'intérieur du module.

Questions connexes