2012-09-23 2 views
6

Wenn ich Skeleton-Anwendung von Zend Framework 2 studiere, möchte ich eine Beschriftung oben rechts auf der Seite hinzufügen, um die UserName anzuzeigen, die angemeldet sind. Aber ich bin verwirrt bei der Code der Navigationsleiste, die in layout.pthml definiert wurde, wie kann der Controller mit dem layout.phtml kommunizieren, um es zu ändern?Zend Framework 2: Ändern Sie Details von layout.pthml in Controller

Vielen Dank im Voraus!

Darüber hinaus möchte ich ein Login-Formular oben rechts auf der Seite, wenn der Benutzer nicht mit einem Helfer angemeldet ist. Aber ich weiß nicht, wie man ein Formular mit Hilfe hinzufügen, was soll ich tun?

+0

Warum gehen Sie nicht für die Sitzungsvariable, um den Benutzernamen zu speichern? –

+0

Ich möchte den Benutzernamen " – zc1415926

+0

" "zeigen", drücken Sie den Benutzernamen in Sitzung in der Steuerung, dann verwenden Sie diesen Wert im Layout. –

Antwort

7

Von einem Controller Sie die Controller-Plugin verwenden können „Layout“ genannt, eine Variable zu setzen:

$this->layout()->username = “some value”; 

Dann in layout.phtml sollten Sie in der Lage zu tun:

<?php echo $this->username; ?> 

Wenn Sie Werfen Sie einen Blick auf Zend\Mvc\Controller\Plugin\Layout Sie werden sehen, dass die __invoke Methode ohne Parameter eine Instanz von ViewModel zurückgibt, warum dies funktioniert.

1

Wenn Sie es Modul weit definieren möchten, auf Ihrem module.php

public function onBootstrap(MvcEvent $e) 
{ 
    .... 
    $e->getViewModel()->setVariable('username', 'some_value'); 
} 

und auf layout.phtml

echo $layout->username; 
0

In module.php u dieses

tun können
public function onBootstrap(MvcEvent $e) 
{ 
    .... 
    $e->getViewModel()->setVariable('username', $username); 
} 

Und in Ihrem Layout können Sie tun

echo $this->layout()->username; 

Überprüfen Sie auch, ob Sie die MvcEvent-Klasse verwendet haben.