0

出力エスケープをオンにしているときに、テンプレート ファイルがアクセスできるすべての変数をパーシャルに渡す簡単な方法はありますか?

私はテンプレート ファイルを作成し、ある時点で物事をパーシャルにリファクタリングする傾向があります。同じ変数をすべてテンプレートからパーシャルに渡すだけの簡単な方法があるように思われます。

出力エスケープがオンになっていて、$sf_dataだけを渡すことはできません。

別のパーシャル内からパーシャルを呼び出すのは非常に簡単なようです...変数 $vars を渡すだけです。

編集: これはSymfony 1.2+に関するものです

4

1 に答える 1

2

Symfony のどのバージョンを使用していますか?

TIP symfony 1.1 の新機能: テンプレートを返す代わりに、アクションはパーシャルまたはコンポーネントを返すことができます。アクション クラスの renderPartial() および renderComponent() メソッドは、コードの再利用性を促進します。さらに、これらはパーシャルのキャッシング機能を利用します (第 12 章を参照)。アクションで定義された変数は、変数の連想配列をメソッドの 2 番目のパラメーターとして定義しない限り、部分/コンポーネントに自動的に渡されます。

したがって、include_partial() の 2 番目の引数を渡さない場合は、完了していると思います...

編集:完全に間違っています。renderPartial() で何が行われるか見てみましょう: これを行う getPartial() への呼び出しがあります:

$vars = null !== $vars ? $vars : $this->varHolder->getAll();

これで、アクション内のすべての変数を含む変数を作成できます。

  public function executeStackOverflow()
  {
    $this->testVar = 42;
    $this->allVars = $this->varHolder->getAll();
  }

これで、パーシャルを呼び出して、2 番目の引数として $allVars を与えることができます。すべての変数に付与されたアクセス。

于 2010-06-07T10:29:46.343 に答える