Mehrere views auf einer Seite

Moin Community,

ich versuche gerade, auf einer Seite mehrere Views unterschiedlicher Modelle anzuzeigen.

Mittels renderPartial() funktioniert das zwar, allerdings fehlen dann ja sowohl header - als auch footer.

Bei der verwendung von render() habe ich diese dagegen doppelt.

Was ist denn hierfür die eleganteste Möglichkeit?

Vielen Dank vorab!

LG

Du könntest einen eigenen view mit header und footer machen in dem du einfach etwas raus echo’st.




//header

echo $partialView;

//footer




und dann im controller folgendes:




$partialView = $this->renderPartial('foo');


$this->render('bar', array(

	'partialView' => $partialView,

));




Die Idee ist gut, vielen Dank dafür!

Leider haut es bei mir noch nicht ganz hin: renderPartial wird anscheinend noch vor dem render ausgegeben und somit nicht innerhalb der neuen view angezeigt.

Gemäß Klassenreferenz gibt es ja den ‘return’-Parameter welchen ich noch auf ‘return’=>true,

gesetzt habe - allerdings ohne Ergebnis.

deine action macht $this->render() und innerhalb deiner view-datei renderst du die partials.

Noch eine Lösung.

Du Renders die erste Datei und in der machst du die andern mit renderPartial.

Nicht bös’ sein aber dann schaut man halt mal kurz in die Doku:

http://www.yiiframework.com/doc/api/1.1/CController#renderPartial-detail

Guten Morgen,

wow, vielen Dank für die replys!

mbi und julian90s Ergänzungen spiegeln ja eigentlich den selben Ansatz wieder - so hats dann auch funktioniert.

@hofrob

Ich bin Dir natürlich nicht böse.

Vielleicht habe ich mich nicht präzise genug artikuliert bzw. deinen Initialpost fehlinterpretiert:

In der Klassenreferenz hatte ich bereits nachgelesen dass es einen "return"-parameter gibt.

Ich versuchte also den Ergebnisstring von renderPartial in eine Variable zu laden und diese (wie in deinem Beispiel) an ein erneutes render zu übergeben.

In etwa so:

$out = $this->renderPartial(‘TeilView’, array(‘dataProvider’=>$dataProvider, ‘return’ => true,));

$this->render(‘GesamtView’,array(‘out’=>$out,));

Hierbei wird allerdings renderPartital direkt ausgegeben, anstatt ein eine Variable gespeichert zu werden.

Noch eine andere Zwischenfrage die mir bei ein paar Beispielen gekommen ist: In welchem Zusammenhang stehen views welche sich nur im Underscroe "_" des Viewnamens unterscheiden?

Vielen Dank ;-).

"_" kennzeichnet einen partial-View.

$return ist nicht Teil des $data arrays. Es ist ein eigener Parameter der Methode renderPartial.




$out = $this->renderPartial('TeilView', array('dataProvider'=>$dataProvider), true);



Nur eine Anmerkung dazu: Zumindest verwenden viele Entwickler diese Art der Bezeichnung. Dem Framework ist es prinzipiell aber egal.

hofrob