Ich habe eine PHP-Datei unter protected / views / directory_controller_name mit einer solchen Formatierung
%Vor%Ich zeige die Datei mit der klassischen Methode im Controller an:
%Vor%Aber ich muss eine E-Mail mit derselben Vorlage / demselben Layout senden, damit ich das Rendern der Datei in einer Variablen wie
speichern kann$ msgHTML = $ this- & gt; renderInternal ('_ items', array ('model' = & gt; $ model));
%Vor%Wie kann ich die Renderansicht von einer Datei abrufen und in einer Variablen speichern? Ist es möglich?
Ich möchte nicht verwenden:
%Vor%Weil die Datei sehr lang ist und ich keinen Code duplizieren möchte !!!
Verwenden Sie die renderInternal-Methode nicht, verwenden Sie stattdessen renderPartial . Render Internal ist Low-Level-Methode und sollte nicht in einem solchen Kontext verwendet werden. Um die Ausgabe abzufangen, setzen Sie den Parameter $ return auf true:
%Vor%Ich könnte etwas vermissen, aber können Sie nicht normales render () verwenden, wobei das Rückgabeargument auf "true" gesetzt ist? Dann können Sie einfach den Namen einer Ansicht verwenden, anstatt den Pfad zu kennen. (Und wenn mein vertrauenswürdiger Stack-Trace-Logger nicht kaputt ist, verwenden renderFile und renderInternal dasselbe vollqualifizierte Pfadargument. Zumindest kann ich sehen, dass renderPartial () den vollständigen Pfad zu meiner View-Datei an renderFile übergibt.)
Sie können dies mit diesen Möglichkeiten tun
1) Wenn Sie die Ausgabe mit Kopf- und Fußzeile (d. h.) vollständigem Layout erhalten möchten, tun Sie dies
%Vor% 2) Wenn Sie die Layoutdateien nicht erhalten möchten, verwenden Sie einfach renderpartial
auf die gleiche Weise
Sie erhalten das HTML der Dateien in der Variablen. benutze das überall.
Tags und Links yii