4

グローバルの layout.php ファイルには、各ページのタグが含まれています。

<body> 
    <?php echo $sf_content ?>
</body>

しかし、サイトのすべての内部 HTML ページでは、body タグにクラスが適用されます。

 <body class="inner-page"> 
    <?php echo $sf_content ?>
 </body>

クラスを別のテンプレートからレイアウトに渡すにはどうすればよいですか?

4

5 に答える 5

4

あなたの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')))
?> 
于 2009-05-10T02:57:49.443 に答える
4

Symfony 1.2+で使用したソリューションは次のとおりです

アクションで setSlot() を使用します。

$this->getResponse()->setSlot('home_page', 'yes');

次に、レイアウトで get_slot() を使用します。

<body class="<?php echo has_slot('home_page') ? 'home-page' : 'inner-page' ?>">
于 2009-05-10T02:57:54.340 に答える
0

通常のビューファイルから行うのと同じ方法でこれを行うと90%確信しています。アクションで変数を設定する限り、layout.phpファイルからアクセスできる必要があります。

あなたの行動で:

$this->body_class = "xxx";

layout.phpで

<body class="<?php echo $body_class?>"> 

$ body_classが設定されていることを確認するために、必ずいくつかのチェックを実行してください。

于 2009-05-10T04:03:17.367 に答える
0

ほとんどの MVC フレームワークでは、ビュー ファイルで変数にアクセスするのと同じ方法で、レイアウトの変数にアクセスします。

したがって、 $this->view->my_data=10; のようなことをしたとします。コントロールで。レイアウトで次のようにアクセスできます: echo $this->my_data.

これは疑似コードだったので、シンフォニー風に調整。

于 2009-05-10T02:47:41.743 に答える
0

sfConfig::set('name_here', $variableHere);
$variable = sfConfig::get('name_here');

私はこれをよく使います。これは、コードの任意の場所で使用してください。

于 2016-08-19T09:53:53.883 に答える