我需要根据浏览网站的国家/地区显示不同的徽标图片(在layout.php中)。在动作中设置它并不起作用,因为在调用preExecute()(或任何其他动作)之前呈现布局。
如何在渲染布局之前设置文化,然后在layout.php中调用此变量?
答案 0 :(得分:2)
您应该阅读文档的用户文化section。正确设置用户文化后,您还可以在模板和布局中使用$sf_user->getCulture()
。
注意:@glerendegui是正确的,布局在动作后呈现,甚至在模板之后呈现。
答案 1 :(得分:0)
我认为这不是真的。调用操作后呈现布局。例如,您可以使用$ this-> setLayout();更改actions.class中的de layout。 无论如何,我认为您可以使用一个插槽来解决您的问题。 在布局中:
<?php if(!has_slot('logo_image')) { ?>
<img src="<?php ... default logo;?>" />
<?php else { include_slot('logo_image'); } ?>
然后,在你的动作模板(f.e.indexSuccess)
中<?php
slot('logo_image');
?><img src="<?php .... l10n image ?>" />
<?php end_slot(); ?>