3 Stimmen

Zugriff auf Zend-View-Variablen vom Breadcrumb-Teil

Wie kann ich von einer partiellen Breadcrumb-Ansicht auf eine Variable zugreifen, die in der eigentlichen Ansicht definiert ist?

Ich habe es mit $this->myVar versucht, aber ich bekomme nichts.

Ich habe das auch versucht und es funktioniert:

$view = Zend_Layout::getMvcInstance()->getView();
echo $view->myVar 

Ist das richtig oder gibt es einen besseren Weg?

2voto

Mr Coder Punkte 8053

Obige Antwort von Davi Harkness ist gr8, aber wenn Sie es immer noch wie $view->var verwenden möchten, dann müssen Sie nicht einmal partielle View-Helper für die einfach tun verwenden

   $view = new Zend_View();
    $paths = $this->view->getScriptPaths();
    $view->addScriptPath($paths[0]);
    $view->name = "open source";
    $test = $view->render("test.phtml");
    echo $test;

Die Datei test.phtml befindet sich im Verzeichnis /views/scripts des aktuellen Moduls und enthält

<?php echo $this->name?>

1voto

David Harkness Punkte 34750

En Dokumentation der Teilansicht-Helfer heißt es ausdrücklich, dass sie "zum Rendern einer bestimmten Vorlage innerhalb ihres eigenen Variablenbereichs verwendet wird". Dies geschieht durch Klonen der Ansicht und Löschen aller vorhandenen Variablen in ihrem cloneView() Methode:

public function cloneView()
{
    $view = clone $this->view;
    $view->clearVars();
    return $view;
}

Anstelle der Kopplung der partiellen zu den Ansichten, die es aufrufen, sollten Sie diese Ansichten in die Werte übergeben die partielle Bedürfnisse in einem Array.

<?php echo $this->partial('partial.phtml', array(
    'from' => 'Team Framework',
    'subject' => 'view partials',
)); ?>

Dann kann das Skript der Teilansicht auf $this->from y $this->subject .

<?php // partial.phtml ?>
<ul>
    <li>From: <?php echo $this->escape($this->from) ?></li>
    <li>Subject: <?php echo $this->escape($this->subject) ?></li>
</ul>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X