![](/img/trans.png)
[英]How to pass object to the layout view without action in Symfony 2?
[英]How can you pass a parameter from an action to the layout in Symfony
全局layout.php文件包含每個頁面的標記:
<body>
<?php echo $sf_content ?>
</body>
但是對於我網站的所有內部HTML頁面,都會將一個類應用於body標記:
<body class="inner-page">
<?php echo $sf_content ?>
</body>
如何從不同的模板中將類傳遞給布局?
在你的layout.php中
<body <?php if (!include_slot('body_id')): ?>id="default"<?php endif; ?>>
在您的模板中:
<?php slot('body_id') ?>id="bla"<?php end_slot(); ?>
要么
<?php slot(
'body_id',
sprintf('id="%s"', $sf_params->get('module')))
?>
這是我與Symfony 1.2+一起使用的解決方案
在操作中使用setSlot():
$this->getResponse()->setSlot('home_page', 'yes');
然后在布局中使用get_slot():
<body class="<?php echo has_slot('home_page') ? 'home-page' : 'inner-page' ?>">
sfConfig :: set('name_here',$ variableHere);
$ variable = sfConfig :: get('name_here');
我經常使用它。 在代碼的任何地方使用它。
在大多數MVC框架中,您可以像在視圖文件中訪問變量一樣訪問布局中的變量。
所以,如果你做了類似$ this-> view-> my_data = 10的事情; 在控制中。 您可以通過以下方式訪問布局:echo $ this-> my_data。
這是偽代碼,調整為交響樂方式。
我90%肯定你這樣做是從普通視圖文件中這樣做的。 因此,只要您在操作中設置變量,就應該可以從layout.php文件中訪問它。
在你的行動中:
$this->body_class = "xxx";
在layout.php中
<body class="<?php echo $body_class?>">
一定要運行一些檢查以確保設置$ body_class。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.