2016-07-07 5 views
0

Ich benutzte PHP-Dateien im Zend-Framework. Jetzt verwende ich .tpl Dateien. Ich habe gefunden, wie man HTML-Skript und alle benutzt. Aber wenn ich PHP-Code verwenden möchte. Dann verwende ich:Wie kann ich Inhalte im Layout zend framework2 abrufen?

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

Das Problem mit diesem ist es in layout.tpl Datei. Hauptinhalt ist in index.tpl eines anderen Moduls.

Anstatt den Inhalt der Indexdatei holen Es echo nur 'test'.Wie es funktioniert zu machen?

Bearbeitet: Ich habe auch versucht {$this->content}.

+0

Vielleicht brauchen Sie 'Smarty' Syntax, nicht' PHP'. – newage

+0

wenn ich suche, bekomme nur Vorschlag dieser Syntax :( – Shashikala

+0

Ich habe PHP: Smarty: {$ foo} Aber keine Verwendung – Shashikala

Antwort

1

Wenn Sie die Smarty Templating Engine und die SmartyModule verwenden, müssen Sie die Smarty-Syntax in Ihren View-Skripten verwenden, da die Zend\View\Renderer\PhpRenderer vom Smarty-Renderer (und der Smarty-Template-Engine) überschrieben wird. Wenn Sie Layouts mit Smarty verwenden möchten, lesen Sie bitte den Mechanismus Smarty's Template Inheritance. Hier ein Beispiel:

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} 

Andernfalls, wenn Sie die PhpRenderer verwenden, wird es nicht "erkennen" jede Template-Sprache, auch wenn Sie ändern die Dateierweiterung des View-Skripts in .tpl, da es einfach den Inhalt der View-Skripte include enthält (siehe Zeilen 502-503 des Renderers source code). Daher wird der PHP-Code wie bei allen include sofort ausgeführt und in der Eigenschaft $__content des Renderers gespeichert. Dies ist wahrscheinlich der Grund, warum Ihr echo Befehl sofort ausgeführt wird.

Also, im Grunde müssen Sie Ihren Renderer (PhpRenderer oder Smarty Renderer über das SmartyModule) wählen und sich dann an seine innere Arbeitsweise (PHP/HTML oder Smarty-Syntax (ex. variables), jeweils halten).