0

すべてのレイアウトテンプレートで同じように表示されるグローバルエリアのようなものを持つことは可能ですか?つまり、私が持っている場合:

<?php echo $helper->renderArea('global.bottom', '.clearfix') ?>

いくつかの異なるレイアウトファイル(pageSuccess.php、customPageSuccess.php、homePageSuccess.phpなど)

私がこの領域でそれらの1つについて何かを変更するときはいつでも、それはそれらすべてに対して変更されます。たとえば、pageSuccess.phpレイアウトを使用して、任意のページのこの領域に新しいゾーンと新しいテキストウィジェットを追加すると、このグローバル領域を使用してすべてのレイアウトに変更が表示されます。

出来ますか?

4

1 に答える 1

1

したがって、いくつかのテンプレートには、それらのテンプレートとまったく同じ方法でレンダリングするコードが必要だとおっしゃっています。

私のアドバイスは、スロットを使用することです。たとえば、helloSuccess.php と goodbyeSuccess.php というテンプレートがありますが、どちらも何かを表示する必要があります (現在の時刻としましょう)。そのため、サイトのどこにでも表示する必要はありませんが、一部のテンプレートでは必要になる場合があります。

次のような layout.php (メインのアプリ レイアウト テンプレート) を作成できます。

<html>
<head>
{....}
</head>
<body>
  <div id="special_container">
    <?php if(has_slot("time")):?>
      <?php include_slot("time")?>
    <?php endif?>
  </div>
  <div class="container">
    <?php echo $sf_content ?>
  </div>
</body>
</html>

次に、「special_container」で何かをレンダリングしたい各テンプレートは、スロット「time」を実装する必要があります。例に戻ると、helloSuccess.php と goodbyeSuccess.php のコードは次のようになります。

<?php slot('time') ?>
  <!-- custom sidebar code for the current template-->
  <h1>Time </h1>
  <p>name:  <?php echo date("D M d, Y G:i a"); ?></p>
<?php end_slot() ?>

スロット、コンポーネント、パーシャルの詳細については、このリンクをお勧めします:ビュー レイヤーの内側にはsymfony 1.2 がありますが、2.0 より前のほぼすべての symfony バージョンでまったく同じです。

于 2011-11-17T02:58:38.840 に答える