繁体   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