2016-07-07 6 views
0

私はzendフレームワークでphtmlファイルを使用していました。今は.tplファイルを使用しています。 htmlスクリプトとすべての使い方を見つけました。しかし、私はPHPコードを使用したい。そして、私が使用しています:レイアウトzend framework2のコンテンツを取り出す方法は?

<?php 
    echo "test"; 
    echo $this->content; 
?> 

これに伴う問題は、それがlayout.tplファイルであるです。主な内容は他のモジュールのindex.tplにあります。

インデックスファイルの内容をフェッチするのではなく、単に「テスト」とエコーします。どのように動作させるには?

編集:私も試しました{$this->content}

+0

'php'ではなく' Smarty'構文を使う必要があるかもしれません。 – newage

+0

もし私がこの構文だけの提案を得ているのならば:( – Shashikala

+0

私はPHPを持っています:<?php echo $ foo;?> Smarty:{$ foo} – Shashikala

答えて

1

SmartyテンプレートエンジンとSmartyModuleを使用している場合は、Zend\View\Renderer\PhpRendererがSmartyレンダラー(およびSmartyテンプレートエンジン)によってオーバーライドされるため、ビュースクリプトでSmarty構文を使用する必要があります。また、Smartyでレイアウトを使用する場合は、Smarty's Template Inheritanceメカニズムを参照してください。次に例を示します。

layout.tpl

<html> 
<head> 
    <title>{block name=title}Default Page Title{/block}</title> 
</head> 
<body> 
{block name=body}{/block} 
</body> 
</html> 

mypage.tpl

{extends file="layout.tpl"} 
{block name=title}My Page Title{/block} 
{block name=body}My HTML Page Body goes here{/block} 

そうでなければ、あなたがPhpRendererを使用している場合、それはあっても、任意のテンプレート言語を "認識" しませんレンダラーのsource codeの502〜503行目を参照してください)の内容を単にincludeとするだけで、ビュースクリプトのファイル拡張子を.tplに変更します。したがって、includeと同様に、PHPコードは即座に実行され、レンダラーの$__contentプロパティに格納されます。これはおそらくあなたのechoコマンドがすぐに実行される理由です。

基本的には、レンダラー(PhpRendererまたはSmartyRenderer)をSmartyModuleで選択し、その内部の動作(PHP/HTMLまたはSmarty構文(それぞれvariables))に従わなければなりません。

関連する問題