2009-03-04 11 views
16

Symfonyの異なるモジュールに異なるテンプレートレイアウトを設定するにはどうすればいいですか?symfonyの異なるモジュールに異なるテンプレートレイアウトを設定するには

私は、ログイン画面とメンバーセクションで構成される銀行アプリケーションを持っています。ユーザーが自分のサイトに行くと、ログイン画面が表示されます。ログイン後、彼はメンバーセクションにリダイレクトされ、彼はどんな銀行ニーズにも対応できるようになります。

ログイン画面とメンバーセクション内のページに異なるレイアウトを設定するにはどうすればよいですか? symfonyはALLページのテンプレートとしてfrontend/templates/layout.phpを使用しているようです。異なるレイアウトを定義することは可能ですか?

答えて

42

はい、ビューごとに別々のレイアウトを定義する(またはレイアウトを完全に無効にする)ことができます。これを行うには、あなたのモジュールの/ configディレクトリにview.ymlファイルを作成(またはすでに持っている場合は編集)する必要があります。モジュールのすべてのビューまたは各ビューに個別に使用するレイアウトを定義できます。例:

#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 

すべての場合、レイアウトは、アプリケーションの/ templatesディレクトリ(.php付き)のファイルです。モジュールのビュー設定ファイルにレイアウトディレクティブを定義しないと、デフォルトのレイアウトが使用されます。

-1

それとも、内部アクションであれば、あなたは、単に使用することができます。

$this->setLayout('name_file_layout_without_extension'); 

そして、あなたは、モジュール内で使用しているテンプレート上で動作することができた後に。

関連する問題