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).
Vielleicht brauchen Sie 'Smarty' Syntax, nicht' PHP'. – newage
wenn ich suche, bekomme nur Vorschlag dieser Syntax :( – Shashikala
Ich habe PHP: Php echo $ foo;?> Smarty: {$ foo} Aber keine Verwendung – Shashikala