• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Hilfe zu ZF2 ViewModel

Tronjer

Senior HTML'ler
Hallo, ich spiele gerade etwas mit ZF2 und habe da einen IndexController und eine index.phtml:

IndexController.php:
PHP:
class IndexController extends AbstractActionController
{
    public function indexAction()
    {
        return new ViewModel(
            array(
                'greeting' => 'hello world!',
                'text' => 'Das ist ein Probetext',
            )
        );
    }
}

index.phtml:
HTML:
<p><?php echo $this->greeting; ?></p>
<p><?php echo $this->text; ?></p>

Das funktioniert auch, und nun möchte ich das Beispiel dahingehend erweitern, dass das ViewModel() in einem Array gespeichert und über eine foreach-Schleife ausgegeben wird:

IndexController.php
PHP:
class IndexController extends AbstractActionController
{
    public function indexAction()
    {
        $view = new ViewModel(
            array(
                'greeting' => 'hello world!',
                'text' => 'Das ist ein Probetext',
            )
        );
        return $view;
    }
}

index.phtml
PHP:
<?php
foreach ($this->view as $text) {
    echo $text . "<br />";
}
?>

Hier erhalte ich aber nichts ausgegeben, und im Apache error_log steht: "Invalid argument supplied for foreach". Was mache ich hier falsch?
 
Woher weiß die index.phtml-Datei denn was $this ist? Eigentlich nirgendwoher ne? Also versuchst Du eigentlich "nichts" in einer Schleife auszugeben. Du müsstest aber eigentlich die Klassen-Datei includen und dann die Funktion in der Klasse aufrufen.
 
Woher weiß die index.phtml-Datei denn was $this ist? Eigentlich nirgendwoher ne? Also versuchst Du eigentlich "nichts" in einer Schleife auszugeben. Du müsstest aber eigentlich die Klassen-Datei includen und dann die Funktion in der Klasse aufrufen.

Die index.phtml weiß doch, was in

PHP:
$this->greeting

steht. Also kann ich den Inhalt des ViewModels als $key durchreichen. Was hingegen nicht funktioniert ist, das ViewModel selber in einer Variablen zu speichern und mit $this->view aus der index.phtml aufzurufen. In dem Fall erhalte ich null zurück und mir ist nicht klar, warum das eine funktioniert und das andere nicht.

Es gibt zwar in der ZF2-Doku noch die Methode setTemplate(), aber ich weiß nicht, was genau ich der als Parameter übergeben soll, den Pfad zum IndexController?

Zend Framework

Ich habe gerade Urlaub und wollte mich endlich mal in das ZF einarbeiten; das Thema schleppe ich schon ewig lang vor mir her. Was ich ich bisher getan ist, das Modul Application aus der ZendSkeletonApplication zu kopieren und umzubenennen. Nun will ich es soweit wie möglich herunterbrechen, um die Zusammenhänge zu verstehen und anschließend stückweise ausbauen. Das offizielle Tutorial ist mir noch zu umfangreich und top-down.
 
Zuletzt bearbeitet:
Muss das im Controller nicht "$this->view" heißen, damit Du das im Template mit $this->greeting ausgeben kannst? So war das jedenfalls vor der 2.0.
 
Ich meinte eigentlich in der IndexController.php

$this->view->greeting = "foo";

und im Template (index.phtml) dann <?= $this->greeting ?>

Kann mich aber auch irren, zf ist schon länger her bei mir. Nutze eigentlich nur noch slim.php für RESTful Webservices.

Uups ... sorry ... hab mich verlesen ... vergiss was ich geschrieben habe
 
Zurück
Oben