サイトを閲覧している国に基づいて、(layout.phpで)異なるロゴ画像を表示する必要があります。preExecute()(または他のアクション)が呼び出される前にレイアウトがレンダリングされるため、アクションでの設定は機能しません。
レイアウトがレンダリングされる前にカルチャを設定してから、layout.phpでこの変数を呼び出すにはどうすればよいですか?
サイトを閲覧している国に基づいて、(layout.phpで)異なるロゴ画像を表示する必要があります。preExecute()(または他のアクション)が呼び出される前にレイアウトがレンダリングされるため、アクションでの設定は機能しません。
レイアウトがレンダリングされる前にカルチャを設定してから、layout.phpでこの変数を呼び出すにはどうすればよいですか?
ドキュメントのユーザーカルチャーのセクションを読む必要があります。ユーザーカルチャを適切に設定する$sf_user->getCulture()
と、テンプレートやレイアウトでも使用できます。
注:@glerendeguiは正しいです。レイアウトは、アクションの後、さらにはテンプレートの後でレンダリングされます。
それは本当ではないと思います。アクションが呼び出された後、レイアウトがレンダリングされます。この例では、actions.classのレイアウトを$ this-> setLayout();で変更できます。とにかく、1つのスロットで問題を解決できると思います。レイアウト:
<?php if(!has_slot('logo_image')) { ?>
<img src="<?php ... default logo;?>" />
<?php else { include_slot('logo_image'); } ?>
次に、アクションテンプレート(fe indexSuccess)で
<?php
slot('logo_image');
?><img src="<?php .... l10n image ?>" />
<?php end_slot(); ?>