2016-07-26 13 views
0

私はphpテンプレートとtwigテンプレートの両方を含むサイトを持っています。twigとphpの間で共通ファイルを扱う

ナビゲーション作成クラスを呼び出すphpを含む共通のheader.phpファイルを使用するには、両方のシステムが必要です。私は非小枝ファイルを小枝に変換することはできませんし、小枝スコープ内からPHPを実行する方法はありません。

これは、phpが実行されず、ユーザーに表示されるため、twigコンテンツと共に使用されたときにヘッダーファイルが正しく提供されないという状況を作り出しています。私は大規模で成長しているTwigとPHPの両方のテンプレートを持っています(質問しません) - 一方を他方に変換することは疑問です。

この状況をどのように処理するかについてのアイデアはありますか?

これはスリムで構築されています。

編集:

具体的には、このPHPは、使用する適切なDBの接続を決定し、キャッシュされたバージョンを使用するか、データベースからのナビゲーション構造を再生するか否かを決定する別のファイルを含んでいます。

重複しない - twig関数はPHPテンプレートでは実行されません。

+0

の可能性のある重複[TWIGで使用PHP関数?](http://stackoverflow.com/questions/8180585/use-php-function-in-twig) – Vuldo

+0

私にはありません信じてtwig関数を使うことによって、私はPHPベースのテンプレートに問題を移してしまいます。なぜなら、それを実行できないからです。 – steelpush

+1

なぜあなたはすべての出力にtwigを使用しないのかは分かりません。 imho 'twig'はどこからデータを取得するのかとは関係ありません。受信して表示するだけです。私がプロジェクトを担当していないので、出力されていないPHPを – DarkBee

答えて

0

私はこれを解決しました。私はdb接続を使用してtwig/phpソースを区別できることに気付きました。これにより、そのケースを処理するtwig関数を作成し、それらのコンテキストの既存のPHPアプローチを維持することができました。

だけの利益のために、これは現在、順調に作業しているナビゲーションローディングコードです:

<!-- madness --> 
         <span style="display: none;">{% if 0 == 1 %}</span> 
         <?php 
         if (isset($this->db)) { 
          $pdo = $this->db; 

          require_once 'primary-navigation.php'; 
         } 
         ?> 
         <span style="display: none;">{% endif %}</span> 

         <span style="display: none;"><?php if (0 == 1) { ?></span> 
          {{ loadNavigation(pdo) }} 
         <span style="display: none;"><?php } ?></span> 

         <!-- end of madness --> 

すべてのラインが機能して重要です。すべての言語を数える!

0

TwigはPHP用のビューテンプレートエンジンで、Model–view–controller (MVC)です。

MVC、モデルの中心的なコンポーネントは、ユーザ インタフェースの独立その問題領域の観点から、中 アプリケーションの挙動を捕捉します。

  • このモデルは、アプリケーションのデータ、ロジック、およびルールを直接管理します。
  • ビューには、チャートや図などの情報の出力表現を使用できます。同じ情報の複数のビューは、管理の棒グラフや 会計士の表形式など、可能な限り です。
  • コントローラの3番目の部分は、入力を受け取り、それをモデルまたはビューのコマンドに変換します。

関連する問題