Migration vom Taschenrechner von 2.1 nach 3.0

Hier dreht sich alles um die auf der Webseite veröffentlichten Tutorials. // This forum is all about the APF tutorials.
Antworten
Benutzeravatar
dave
Beiträge: 903
Registriert: 04.02.2011, 19:03:57
Wohnort: Berlin
Kontaktdaten:

Migration vom Taschenrechner von 2.1 nach 3.0

Beitrag von dave » 22.02.2015, 17:45:05

Ich habe einiges an Nachholbedarf. Das APF hat sich ja extrem verändert :shock: Vor zwei Jahren konnte ich mir noch einen guten Teil selbst erklären, indem ich mich ein wenig durch die Struktur gehangelt habe. Aber mittlerweile wird das auch nichts mehr so richtig.

Problem: Unter APF 2.1 habe ich das Taschenrechner-Beispiel wunderbar zum Laufen bekommen, ohne Anpassung. Ich habe dann einfach den APF_Ordner mit dem Inhalt aus dem APF 3.0 ersetzt und mir die Migration angeschaut. in meiner index.php habe ich nun ein:

Code: Alles auswählen

Document::addTagLib(new TagLib('APF\tools\form\taglib\HtmlFormTag', 'html', 'form'));
hinzugefügt, um die Taglib bekannt zu machen. Nun erhalte ich den Fehler, dass die Klasse 'Document' nicht bekannt ist:

Code: Alles auswählen

Fatal error: Class 'Document' not found in /is/htdocs/.../.../index.php on line 15 
Hier mal die kaum veränderte index.php:

Code: Alles auswählen

<?php
use APF\core\frontcontroller\Frontcontroller;
use APF\core\singleton\Singleton;
use APF\core\loader\RootClassLoader;
use APF\core\loader\StandardClassLoader;

// pre-define the root path of the root class loader (if necessary)
$dir = dirname($_SERVER['SCRIPT_FILENAME']);
$apfClassLoaderRootPath = $dir . '/APF';
require('./APF/core/bootstrap.php');

// Define class loader for documentation page resources
RootClassLoader::addLoader(new StandardClassLoader('EXAMPLE', $dir . '/EXAMPLE'));

Document::addTagLib(new TagLib('APF\tools\form\taglib\HtmlFormTag', 'html', 'form'));

/* @var $fC Frontcontroller */
$fC = &Singleton::getInstance('APF\core\frontcontroller\Frontcontroller');
echo $fC->start('EXAMPLE\calc\pres\templates', 'calc');
Ich brauch mal nen Tipp ;)

Benutzeravatar
Paric
Beiträge: 45
Registriert: 25.08.2014, 08:51:04

Re: Migration vom Taschenrechner von 2.1 nach 3.0

Beitrag von Paric » 25.02.2015, 09:47:39

moin moin,

wenn ich das so recht überblicke hast Du ihm nicht bekannt gegeben wo er die Klasse Document findet.

füge einfachmal

Code: Alles auswählen

use APF\core\pagecontroller\Document; 
mit ein.

Gruß,
Pit

Benutzeravatar
dave
Beiträge: 903
Registriert: 04.02.2011, 19:03:57
Wohnort: Berlin
Kontaktdaten:

Re: Migration vom Taschenrechner von 2.1 nach 3.0

Beitrag von dave » 25.02.2015, 18:07:12

Jo, das war schonmal ein guter Hinweis. Ich habe mich ja schon die ganze gewundert, wie ich die Klasse einbinden soll. use ist für mich völlig neu :?
Allerdings klappt es trotzdem nicht wirklich.
No tag definition found for prefix "success" and name "placeholder" in document with type "APF\tools\form\taglib\FormSuccessDisplayTag"! Template code: <p class="result">The result of the calculation is: <success:placeholder name="result" /></p>
Das passt ja wunderbar zur FAQ im Wiki über die Migration von 2.1 nach 3.0. Die Lösung diesbezüglich hilft allerdings nicht.

In meiner index.php

Code: Alles auswählen

use APF\core\frontcontroller\Frontcontroller;
use APF\core\singleton\Singleton;
use APF\core\loader\RootClassLoader;
use APF\core\loader\StandardClassLoader;
use APF\core\pagecontroller\Document;

// pre-define the root path of the root class loader (if necessary)
$dir = dirname($_SERVER['SCRIPT_FILENAME']);
$apfClassLoaderRootPath = $dir . '/APF';
require('./APF/core/bootstrap.php');

// Define class loader for documentation page resources
RootClassLoader::addLoader(new StandardClassLoader('EXAMPLE', $dir . '/EXAMPLE'));

Document::addTagLib('APF\tools\form\taglib\HtmlFormTag', 'html', 'form');

/* @var $fC Frontcontroller */
$fC = &Singleton::getInstance('APF\core\frontcontroller\Frontcontroller');
echo $fC->start('EXAMPLE\calc\pres\templates', 'calc'); 
wird ja gleich zu Beginn die APF/core/bootstrap.php  eingebunden. Die habe ich mir bereits angeschaut und festgestellt, dass dort nach wenigen Zeilen ebenfalls

Code: Alles auswählen

use APF\core\pagecontroller\Document;
.
.
.
Document::addTagLib('APF\tools\form\taglib\HtmlFormTag', 'html', 'form');
 
folgt. So gesehen kann ich mir das sogar in meiner index.php sparen. Jedoch haut es nicht hin, irgendwo ist nen Bug :( Und dieser Bug hat nur mit dem <form:success>-Tag zu tun. Alle anderen Tags funktionieren.

Ich habe diesbezüglich nun einen Eintrag im Tracker erstellt: http://tracker.adventure-php-framework. ... php?id=245

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

Re: Migration vom Taschenrechner von 2.1 nach 3.0

Beitrag von dr.e. » 25.02.2015, 21:40:20

Hallo dave,
Das APF hat sich ja extrem verändert :shock:
Das stimmt, es ist mit 3.0 jedoch einiges besser geworden. Größte Neuerung ist der Parser, der nun alle XML-Strukturen richtig auflöst. Ferner können Tags zentral für alle Templates registriert werden und du sparst dir Dummy-Implementierungen. Insofern denke ich lohnt sich die Einarbeitung. :)
use ist für mich völlig neu :?
Das ist ganz einfach ein PHP-Feature um Namespace-behaftete Klassen einzubinden. Schau dir mal http://php.net/namespace an.
Jedoch haut es nicht hin, irgendwo ist nen Bug :( Und dieser Bug hat nur mit dem <form:success>-Tag zu tun. Alle anderen Tags funktionieren.
Das ist kein Bug. In Version 3 wurde die Tag-Signatur von redundanten Tags befreit. <success:placeholder /> ist nichts anderes als <html:placeholder /> und daher kannst du in <form:success /> einfach ein <html:placeholder /> verwenden. Wie oben angesprochen ist das durch den neuen APF-Parser möglich. Hast du über deinen Code die Migration laufen lassen?

In den neuen Quellen der Examples steht an dieser Stelle ein

Code: Alles auswählen

<form:success name="result">
   <p class="result">The result of the calculation is: ${result}</p>
</form:success>
Schau dir das mal unter https://github.com/AdventurePHP/example ... c.html#L64 an.

Leider ist die neue Doku noch nicht online, ich warte allerdings noch auf ein paar Feature-Implementierungen für 3.0 um das Release zu finalisieren. Sobald ich Rückmeldung von allen Entwicklern habe stelle ich die neue Doku online. Wenn es dir hilft, kann ich dir ein, zwei PDFs ziehen. Evtl. kannst du dir auch https://github.com/AdventurePHP/docs/bl ... _tags.html durchlesen, das sind die Quellen für die Dokumentation. Ferner könnte dich auch https://github.com/AdventurePHP/docs/bl ... lagen.html interessieren. Dort ist nochmal alles Wissenswerte beschrieben.

Solltest du weitere Fragen haben, lass es mich gerne wissen! :) Hoffe du kommst damit weiter.
Viele Grüße,
Christian

Benutzeravatar
dave
Beiträge: 903
Registriert: 04.02.2011, 19:03:57
Wohnort: Berlin
Kontaktdaten:

Re: Migration vom Taschenrechner von 2.1 nach 3.0

Beitrag von dave » 25.02.2015, 21:50:51

Nabend Christian,

vielen Dank für die zahlreichen Informationen. Es immer wieder beeindruckend, wie gut du Hilfe leistest. Vielen Dank nochmals! Die neuen Dokumentationen werde ich mir gleich noch anschauen. Erleichterungen sind natürlich immer gut, auch wenn es am Anfang einige Umstellung erfordert.

Eine Migration kann ich immer nur schwerlich durchführen, da ich alles gleich live online teste und ich dort keinen Zugriff auf die Shell habe.

Ok, dann mache ich mal weiter an die Arbeit und die nächsten Fragen werden sicher nicht lange auf sich warten lassen ;)

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast