Transform Template immer null

Im Entwickler-Forum können Implementierungsdetails sowie Alternativen der Umsetzung diskutiert werden. // Here, developers can discuss implementation details of features of their projects.
Antworten
Thalo
Beiträge: 244
Registriert: 10.08.2009, 16:56:52

Transform Template immer null

Beitrag von Thalo » 07.09.2015, 03:27:56

Hi,

wollte gerade die Anleitung zum ViewModel durcharbeiten (http://adventure-php-framework.org/Page ... iew-models). Leider ist der Return von getTemplate immer ein leerer String. Hier mein Testaufbau:

Code: Alles auswählen

class TestController extends BaseDocumentController
{
    public function transformContent()
    {
            $u = new User();
            $u->setName('abcxyz');
            $this->getTemplate('User')->setData('user', $u)->transform(); <- immer leer
        }
    }
}

Code: Alles auswählen

<html:template name="User">
    ${user->getName()}
</html:template>

Benutzeravatar
dr.e.
Administrator
Beiträge: 4533
Registriert: 04.11.2007, 16:13:53

Re: Transform Template immer null

Beitrag von dr.e. » 07.09.2015, 09:52:17

Hallo Thalo,

der Aufbau deines Controllers und Templates ist grundsätzlich richtig. Allerdings stellt sich ein <html:template />-Tag nur dann dar, wenn du transformTemplate() nutzt oder transformOnPlace() zusammen mit transform() (siehe http://adventure-php-framework.org/Seit ... -Templates).

Der Controller-Code

Code: Alles auswählen

class TestController extends BaseDocumentController
{
    public function transformContent()
    {
            $u = new User();
            $u->setName('abcxyz');
            $this->getTemplate('User')->setData('user', $u)->transformOnPlace();
        }
    }
} 
sollte das gewünschte Verhalten liefern.
Viele Grüße,
Christian

Thalo
Beiträge: 244
Registriert: 10.08.2009, 16:56:52

Re: Transform Template immer null

Beitrag von Thalo » 07.09.2015, 10:26:14

Moin Doc,

das Beispiel war nun reduziert in meinem Fall wird ein Placeholder gefüllt (wie auch in dem Artikel). Allerdings ist der Rückgabewert immer leer in XDebug.

Code: Alles auswählen

var_dump($this->getTemplate('Vendor')->setData('vendor', $v)->transform());
bestätigt das. transformOnPlace funktioniert aber merkwürdigerweise :?

Benutzeravatar
dr.e.
Administrator
Beiträge: 4533
Registriert: 04.11.2007, 16:13:53

Re: Transform Template immer null

Beitrag von dr.e. » 07.09.2015, 10:56:37

Hi,

das ist auch ok so, transform() wird solange einen leeren String zurück geben, wie du kein transformOnPlace() aufgerufen hast. <html:template /> ist ein wiederverwendbares Template-Fragment und gibt sich daher nur dann aus, wenn du das auch explizit möchtest.

Folgendes würde funktionieren:

Code: Alles auswählen

var_dump($this->getTemplate('Vendor')->setData('vendor', $v)->transformTemplate()); 
Letztere wird auch aufgerufen wenn du im Controller ein

Code: Alles auswählen

$this->getTemplate('Vendor')->transformOnPlace() 
aufrufst und die Seite lädst. Dann wird an der Stelle, an der dein <html:template /> definiert ist, dein Wert ausgegeben.

Hoffe das hilft dir! :)
Viele Grüße,
Christian

Thalo
Beiträge: 244
Registriert: 10.08.2009, 16:56:52

Re: Transform Template immer null

Beitrag von Thalo » 07.09.2015, 15:50:52

Hallo Doc,

hier wird der Placeholder ja auch durch transform gefüllt. Ich habe das Beispiel im Grunde ja 1:1 übernommen :? worin besteht denn der unterschied zu transform und transformTemplate?

Benutzeravatar
dr.e.
Administrator
Beiträge: 4533
Registriert: 04.11.2007, 16:13:53

Re: Transform Template immer null

Beitrag von dr.e. » 07.09.2015, 23:05:05

Oh, das ist in der Tat ein Fehler im Artikel! :( Korrigiere ich so bald als möglich (EDIT: korrigiert!). Den Unterschied hatte ich oben versucht zu erläutern: da das Template-Tag ein wiederverwendbarer Container ist, stellt er sich nur dar wenn er dazu "aufgefordert" ist. Die Aufforderung kann entweder durch transformOnPlace() passieren wenn du das Template direkt darstellen möchtest oder du transformierst es explizit durch transformTemplate() was im Artikel leider falsch war.

Hoffe das beseitigt nun alle Unklarheiten. :)
Viele Grüße,
Christian

Thalo
Beiträge: 244
Registriert: 10.08.2009, 16:56:52

Re: Transform Template immer null

Beitrag von Thalo » 08.09.2015, 00:45:49

Hi Doc,

das passt dann ja. Der Typo hatte mich nun irritiert. :)

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast