グローバルの 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' ?>">
通常のビューファイルから行うのと同じ方法でこれを行うと90%確信しています。アクションで変数を設定する限り、layout.phpファイルからアクセスできる必要があります。
あなたの行動で:
$this->body_class = "xxx";
layout.phpで
<body class="<?php echo $body_class?>">
$ body_classが設定されていることを確認するために、必ずいくつかのチェックを実行してください。
ほとんどの MVC フレームワークでは、ビュー ファイルで変数にアクセスするのと同じ方法で、レイアウトの変数にアクセスします。
したがって、 $this->view->my_data=10; のようなことをしたとします。コントロールで。レイアウトで次のようにアクセスできます: echo $this->my_data.
これは疑似コードだったので、シンフォニー風に調整。
sfConfig::set('name_here', $variableHere);
$variable = sfConfig::get('name_here');
私はこれをよく使います。これは、コードの任意の場所で使用してください。