簡體   English   中英

如何將參數從動作傳遞到Symfony中的布局

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM