0

Symfony 1.4 プロジェクトがあります。ご存じのように、テンプレート レイアウトはアプリのテンプレート フォルダーで個別に定義され、他のすべてのテンプレートに広く適用されます。私のレイアウトは非常にシンプルで、次のようになります。

<div id = "header">
</div>
<div id = "content">
<?php echo $sf_content ; ?>
</div>
<div id = "footer">
</div>

ほとんどの symfonian が知っているように、$sf_content は基本的に、現在表示されている Web ページのテンプレートを吐き出します。ログアウト、ロゴなど、ヘッダーに特定のデータが必要な場合は、ヘッダーに含めるだけです。これは本質的に静的であるため、うまく機能します。私が直面している課題は、本質的に動的で、ヘッダー タグ内のページに固有のデータをどのように含めることができるかということです。これは、UI がそこに含めることを要求するためです。

たとえば、私の Web ページの 1 つでは、ユーザー固有のデータをドロップダウン/選択メニューにロードする必要があります。これは動的で、0 から 100 の範囲で、各ユーザーに固有です。このドロップダウン メニューを作成することは問題ではなく、その部分は既に完了しています。課題は、データが $sf_content の一部になり、コンテンツ div に吐き出されることを考えると、ヘッダーにどのようにロードするかです。

$sf_content の特定の部分をヘッダー div に移動する方法はありますか?

4

2 に答える 2

1

あなたのactions.phpで:

$this->getResponse()->setSlot('someData', 'and its value');

layout.php で:

<div id="header">
<?php echo get_slot('someData'); ?>
</div>
<div id="content">
<?php echo $sf_content ; ?>
</div>
<div id="footer">
</div>
于 2013-01-02T02:49:54.673 に答える
0

スロットはこれで機能します。上記の最初の回答のようにアクションで設定するか、テンプレート自体で定義することができます。これは、レイアウト用に定義する動的データがある場合に行ったことです。

あなたの例では:

<div id="header">
  <?php include_slot('some slot name')?>
</div>
<div id="content">
<?php echo $sf_content() ?>
</div>
<div id="footer">
</div>

テンプレートでは、次を定義します。

<?php slot('some slot name')?>
  //your code goes here
<?php end_slot() ?>

レイアウトがレンダリングされると、Symfony はコードを と の間に、slot()end_slot()使用して定義したポイントに配置しますinclude_slot()

簡単にするために、アプリケーション全体で使用されるさまざまな共通スロットを定義するすべてのテンプレートに含まれるグローバル パーシャルを作成しました。スロットとその使用法に関する詳細情報はこちら

于 2013-01-02T17:18:05.353 に答える