2017-11-27 3 views
0

Zend expressive - Layoutzend ausdruck Layout variable

https://github.com/zendframework/zend-expressive-twigrenderer/issues/24

auf dieser Frage basiert, möchte ich eine Variable, um von einer Aktion Layout Wie kann ich versuchen, das zu tun?

$toast = [ 
    'level'=>'info', 
    'msg' =>'rafael', 
    'url' => null 
]; 

$this->template->addDefaultParam(Template\TemplateRendererInterface::TEMPLATE_ALL,'toast',$this->toastrMessenger->show($toast)); 

return new HtmlResponse($this->template->render('contentpages::contact',$data)); 

auf meinem layout/default.phtml

<?php 
if (isset($this->toast)){ 
echo $this->toast;  
} 
?> 

</body> 
</html> 
+0

hast du das versucht und hat nicht funktioniert? –

+0

ja, nicht funktionieren. Willst du, dass ich dieses Skript auf git-Hub setze? –

+0

Hallo, ich mache einen anderen Test und sehe, dass dies funktioniert, um ein praktikables Template und nicht auf dem Layout zu übergeben, ich möchte eine Variable von HomeAction.php an Layout/default.php übergeben, ist das möglich? –

Antwort

0

Haben Sie versucht, "addDefaultParam" Methode? Signetur ist;

public function addDefaultParam($templateName, $param, $value) 

und Sie können einstellen, star (*) als $templateName (siehe TemplateRendererInterface :: TEMPLATE_ALL), so denke ich das Layout es lesen kann.

Sie können darüber auf documentation lesen. Lass es mich wissen, wenn es funktioniert.

+0

aber das ist auf meine Frage. aussehen. –

+0

Ja, es ist. Entschuldige dumme mich. Ich habe gerade Zend-View-Renderer für ausdrucksstark überprüft. In Zeile 325 bereitet die "prepareLayout" -Methode das Layout vor und verwendet keine Variable. Die "addDefaultParam" -Methode hat keine Auswirkungen auf das Layout. Grundsätzlich haben Sie an dieser Stelle 2 Möglichkeiten. Erweitere deinen Renderer und sende Variablen an das Layout (check edit), 2. erstelle einen View Helper. Ich bin sicher, dass Sie viele Beispiele dazu finden können. –

+0

egal Verlängerung Renderer. atleast zend-view-rendere, weil "prepareLayout" eine private Methode ist. Ich denke du solltest einen View Helper erstellen. –

Verwandte Themen