Hilfe für APF-Neuling

Hier finden sich Fragen und Ergänzung zur Dokumentation. // All questions and discussions about the documentation.
Antworten
Benutzeravatar
dr.e.
Administrator
Beiträge: 4605
Registriert: 04.11.2007, 16:13:53

Re: Hilfe für APF-Neuling

Beitrag von dr.e. » 10.08.2009, 11:35:07

Hallo ihr beiden,
Kann ich von meiner überschriebenen methode aus, irgendwo auslesen, wo sich der APF ordner befindet?
Entweder über den von MrNiceGuy beschriebenen Weg oder über den Registry-Key LibPath aus dem Namespace apf::core. Siehe http://adventure-php-framework.org/Seit ... z-Registry.
Allerdings funktioniert dass so jetzt nur für die eine seite logischerweise. In irgend ner variable is doch bestimmt der entsprechende namespace/context gespeichert, oder?
Klar. Den Namespace kenntst du selbst (=der Ordner in dem sich deine Dateien befinden), der Context ist in jedem APF-Objekt in der Variable $this->__Context gespeichert. Die Umgebung findest du ebenfalls in der Registry (->Environment).
also der 1. absatz besagt, dass ich auch in den content-dateien controller, taglibs ect. benutzen kann.
aber wie passt jetzt der 2. absatz dazu? sry versteh nicht ganz für was ich dann eigene taglibs benötigen würde
Nehmen wir an, in deinen Dateien befindet sich nicht nur reiner HTML-Text, sondern auch APF-Tags (z.B. <core:importdesign />, weil du gerne an dieser Stelle eine global verfügbare Funktion einbinden möchtest). Dann ist es notwendig, eine TagLib zu schreiben (wie hier die <doc:createobject />), da nur eine TagLib über die Parser-Methode __extractTagLibTags() verfügt, die die Tags im Inhalt deiner Datei analysieren/parsen kann. Würdest du nur einen Document-Controller nutzen würde dein HTML-Code die Tag-Definition und nicht die gewünschte Funktion (z.B. Artikel-Bewertung) beinhalten.

Für deinen Anwendungsfall nutzt du aber schon eine TagLib, insofern kann nichts mehr schief gehen ;)


Viele Grüße,
Christian
Viele Grüße,
Christian

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: Hilfe für APF-Neuling

Beitrag von Screeze » 10.08.2009, 11:39:00

ah alles klar ok.

Naja hab eben festgestellt dass für meinen anwendungsfall wohl doch ein controller notwendig ist.
Andernfalls müsste ich z.b. die form sowohl für englisch als auch für deutsch in einer eigenen datei ablegen.
Ich überleg mir grad was, wie ich unterscheiden kann ob eine reine inhaltsdatei oder eine dynamische datei eingebunden werden soll, so dass nur bei der inhaltsdatei die sprachenabhängige eingebunden wird. Mal sehen zu welchem ergebnis ich komme, villeicht tuts auch ein überschriebenes taglib.

Benutzeravatar
MrNiceGuy
Beiträge: 749
Registriert: 03.02.2009, 16:49:42
Wohnort: Nienburg / Weser

Re: Hilfe für APF-Neuling

Beitrag von MrNiceGuy » 10.08.2009, 11:44:55

Ups, das hatte ich übersehen: Der Context ist normalerweise in $this->__Context gespeichert, sofern die Klasse von coreObject (oder ähnlicher) geerbt hat. Aber frag mich mal, wo der Namespace steckt *kratzamkopf*
There are only 10 Types of people in the world:
Those who understand binary and those who don't.

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: Hilfe für APF-Neuling

Beitrag von Screeze » 10.08.2009, 12:23:12

Jo danke, hab die variablen jetzt.

Und ich hab ne möglichkeit gefunden, zu unterscheiden ob es sprachenabhängige inhalte sind, oder ob ein Form template geladen werden soll, welches die sprachen selber managed.

Dazu habe ich die überschreibung des doc_taglib_createobject nochmal geändert:

Code: Alles auswählen

protected function __getContent($pageName) {

        $context = str_replace('::','/',$this->__Context);
        
        if(substr($pageName, -4) === '_frm') {
            $file = APPS__PATH . '/' . $context .'/pres/templates/c_'.strtolower(substr($pageName, 0, -4)).'.html';
        } else {
            $file = APPS__PATH . '/' . $context .'/pres/frontend/content/c_'.$this->__Language.'_'.strtolower($pageName).'.html';
        }

        if(!file_exists($file)) {
            $file = APPS__PATH . '/' . $context .'/pres/frontend/content/c_'.$this->__Language.'_404.html';
        }

        return file_get_contents($file);

    // end function
    }
einbinden weiterhin normal (nur name anpassen)

Code: Alles auswählen

<doc:createobject requestparam="page" defaultvalue="home" />  
Folgende änderung:
1. Pfad von öffentlichem bereich in den internen bereich verschoben
2. Wenn man statt der normalen c_de_home.html/c_en_home.html sprachdateien bei bestimmten seiten stattdessen templatedateien einbinden will, welche z.b. formulare enthalten und die sprache selber managen (z.b. registratrionsformular), ist dies nun folgendermaßen möglich:

adressezurseite/?page=register_frm

der zusatz _frm am ende des parameters ist schon alles.
es wird nun keine datei aus
./frontend/content/c_{lang}_register.html
geladen,
sondern
./templates/c_register.html

das c_ hab ich vornedrangelassen, damit man sofort erkennt dass diese datei vom taglib selber benutzt wird.
Egal welche datei er nicht findet, es wird die sprachenabhängige _404 datei weiterhin eingebunden.


------------------------------------------------------------------------------

Beim testen ist mir was aufgefallen:
Wenn der paramter leer ist, also "?page="
wird nicht die standartdatei eingebunden, sondern die 404 template datei.
Normal würde ich erwarten, dass dies erkannt wird und die c_{lang}_home.html datei eingebunden wird.

Ich würde vorschlagen für zukünftige versionen, in der requestHandler.php, Z. 57 eine änderung einzubringen, das is die zuständige methode:

Code: Alles auswählen

static function getValue($name,$defaultValue = null){

         if(isset($_REQUEST[$name])){
            $value = $_REQUEST[$name];
          // end if
         }
         else{
            $value = $defaultValue;
          // end if
         }

         return $value;

       // end function
      }
Hier würde ich die Zeile

Code: Alles auswählen

 if(isset($_REQUEST[$name])){
ersetzen durch

Code: Alles auswählen

 if(isset($_REQUEST[$name]) AND !empty(trim($_REQUEST[$name]))){
Wär das möglich?

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

Re: Hilfe für APF-Neuling

Beitrag von dr.e. » 10.08.2009, 12:59:25

Hallo Screeze,
Wär das möglich?
Klar. Ich muss nur prüfen, ob das einen Impact auf die vorhandenen Funktionen hat. Melde mich heute Abend nochmal dazu.

Viele Grüße,
Christian
Viele Grüße,
Christian

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

Re: Hilfe für APF-Neuling

Beitrag von dr.e. » 10.08.2009, 22:36:43

Hallo Screeze,

nach einem Scannen des Codes, sieht es für mich auf den ersten Blick so aus, als ob das funktionieren würde. Ich habe das in den Code eingebaut und eingecheckt. Die aktuelle Version kannst du dir unter http://adventurephpfra.svn.sourceforge. ... s/request/ ziehen.

Teste das mal und gib mir Feedback, dann integriere ich das in 1.10-stable.

Viele Grüße,
Christian
Viele Grüße,
Christian

Benutzeravatar
fliegermichl
Beiträge: 114
Registriert: 29.01.2008, 11:51:45
Wohnort: Echzell

Re: Hilfe für APF-Neuling

Beitrag von fliegermichl » 10.09.2009, 13:29:08

Moin,

ich habe mich vor einiger Zeit recht intensiv mit dem APF befaßt, dann aber angesichts der undurchdringlichen Komplexität kapituliert.

Das liegt aber nicht nur am APF sondern an Webapplikationen im allgemeinen.

Ich programmiere seit fast 20 Jahren "stinknormale" Desktopapplikationen zuerst mit Turbo/Borland- Pascal. Später mit Delphi.

Wenn ich den Anwender fragen will, ob er etwas wirklich löschen will, dann schreibe ich einfach

Code: Alles auswählen

case MessageDlg('Willst Du das wirklich tun?', mtConfirmation, [mbYes, mbNo], Hilfekontext) of
 mrYes: begin
             while (alive) do
               knock;
            end;
 mrNo: begin
            /make nothing let it alive
           end;
end;
Dann bekommt der Anwender ein Formular mit der Überschrift "Bestätigung", dem Text "Willst Du das wirklich tun", zwei Buttons "Ja" und "Nein" sowie einen "Hilfe" Schalter zu Gesicht. Je nach dem welchen Schalter er anklickt wird geklopft oder eben nicht.

Das geht bei Webanwendungen nicht. Der Client schickt eine Anfrage, der Server erzeugt eine HTML Ausgabe -> Ende

Nun muß sich die Webanwendung über irgendwelche URL Parameter die der Browser wieder zurückschickt, zusammenreimen wo der Anwender vorher war, auf welchen Knopf/Link was auch immer der Anwender geklickt hat und dementsprechend reagieren. Angesichts der Tatsache das beliebig viele Anwender gleichzeitig auf einer Webseite herumgeistern können, wird das dadurch auch nicht unbedingt einfacher.

Diese "Routineaufgaben" kann das APF lösen sodaß man nicht für jede Kleinigkeit immer wieder denselben Code schreiben muß.

Ich wünschte mir eine Möglichkeit, Webanwendungen so zu schreiben wie ich das mit Desktopapplikationen kann.

Aber das wird wohl ein Wunsch bleiben.

Gruß
Michl

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: Hilfe für APF-Neuling

Beitrag von Screeze » 10.09.2009, 14:02:22

hmm hab ich deine Frage überlesen, oder giebts gar keine? :D


Prinzipiell gebe ich dir recht, interfaces programmieren auf webebene ist so gesehen komplexer als stinknormale desktopanwendungen. Dafür werden mehrseite interfaces bei webanwenungen einfacher als bei desktopanwendungen, es sei denn man öffnet für jede seite eine neue desktop-Form, was dann aber hässlich aussieht.


Nun dein Wunsch... Was einfache standartfragen/fenster mit Text, und ein paar buttons betrifft, ließe sich bestimmt ein taglib-modul für das apf zusammenbasteln, welches das implementieren solcher aufgaben abnehmen kann, wenn es die nötigen texte ect. bekommt.
Aber ob der Nutzen dahinter den Aufwand rechtfertigt, wage ich jetzt zu bezweifeln. Wann brauchst du denn mal so ein kleines abfragefenster alla
"diese aktion wirklich ausführen? JA/Nein"
So gut wie nie...

Megger
Beiträge: 1233
Registriert: 04.11.2008, 10:57:37

Re: Hilfe für APF-Neuling

Beitrag von Megger » 10.09.2009, 14:34:14

Ich denke wenn man irgendwelche Daten verwaltet, dann ist es schon hilfreich soetwas zu haben um noch eine Sicherheitsabfrage zu haben.
Tutorial: Browsergame mit dem APF (Die ersten Parts handeln von Installation und Inbetriebnahme des APFs, deswegen sicherlich auch für alle Nicht-Browsergame-Programmierer interessant)

APF-Version
  • Entwicklung: 2.0
  • Produktiv: 1.15

trx
Beiträge: 23
Registriert: 12.08.2009, 13:16:46

Re: Hilfe für APF-Neuling

Beitrag von trx » 10.09.2009, 16:02:17

Solche Pop-Up-Fenster sind doch Fälle für die sich Javascript am besten eignet.
Dürften nur ein paar Zeilen Code sein in denen dann abgefragt wird, ob man das PHP Skript ausgeführt werden soll oder nicht. Wirklich viel Aufwand ist das nun nicht. Gibt dann natürlich keine Fall-Back-Möglichkeit außer einem Hinweis, im Falle dass JS deaktiviert ist.
Verlangt aber bitte kein Beispiel, bin der Sprache nicht mächtig :oops:

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: Hilfe für APF-Neuling

Beitrag von Screeze » 10.09.2009, 16:22:49

auch ein popup fenster muss wieder verwaltet werden, die verwaltung muss der server übernehmen, also wärs das gleiche (fast) wie ein einfaches formular in html.
Und wenn man js aus hat is das doof...

Benutzeravatar
fliegermichl
Beiträge: 114
Registriert: 29.01.2008, 11:51:45
Wohnort: Echzell

Re: Hilfe für APF-Neuling

Beitrag von fliegermichl » 10.09.2009, 16:42:41

Es geht ja gar nicht nur um so eine Abfrage, das war nur ein Beispiel.

Was bei Webanwendungen so schwierig ist, ist den Kontext in dem sich eine "Applikation" gerade befindet wiederherzustellen.

Das ist so, als würde jede Reaktion des Anwenders eine Desktopanwendung direkt wieder zum Programmstart schicken und man muß sich mit 1000 Variablen merken wo man vorher war und was der Anwender da bislang alles gemacht hat.

Das APF ist, so man es dann mal verstanden hat, eine große Hilfe, da es einem diese Aarbeit zum großen Teil abnimmt.

Gruß
Michl

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: Hilfe für APF-Neuling

Beitrag von Screeze » 10.09.2009, 17:25:53

hmm kann man so sagen, ist aber denke ich einfach gewöhnungssache.

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

Re: Hilfe für APF-Neuling

Beitrag von dr.e. » 10.09.2009, 22:47:12

Hallo fliegermichl,

schön, wieder von dir zu hören!
ich habe mich vor einiger Zeit recht intensiv mit dem APF befaßt, dann aber angesichts der undurchdringlichen Komplexität kapituliert.
Das ist schade! :(
Das liegt aber nicht nur am APF sondern an Webapplikationen im allgemeinen.
Ich programmiere seit fast 20 Jahren "stinknormale" Desktopapplikationen zuerst mit Turbo/Borland- Pascal. Später mit Delphi.
Hmm, dabei war das, was du mir gezeigt hast schon wirklich gut. :)
Ich wünschte mir eine Möglichkeit, Webanwendungen so zu schreiben wie ich das mit Desktopapplikationen kann.
Nein. Hier gibt es einige interessante Ansätze. Z.B. das GoogleWidgetToolkit (GWT), JAVA-ServerFaces und die Microsoft Windows Presentation Foundation. Diese bieten eine Möglichkeit Server-seitigen Code zu schreiben und diesen entweder in Client-Code zu kompilieren oder sich das daraus generieren zu lassen.
Was bei Webanwendungen so schwierig ist, ist den Kontext in dem sich eine "Applikation" gerade befindet wiederherzustellen.
Das ist so, als würde jede Reaktion des Anwenders eine Desktopanwendung direkt wieder zum Programmstart schicken und man muß sich mit 1000 Variablen merken wo man vorher war und was der Anwender da bislang alles gemacht hat.
An sich nicht. Du musst deine Applikation einfach Session-aware entwickeln, sprich den Zustand in einem Model in der Session ablegen. Einfache Dialoge kannst du dabei - wie du schon selber sagst - so gestalten, dass die Komponenten einfach nur zusammengesteckt werden müssen.

Ich denke einfach, dass du dich in der Welt der Web-Applikationen noch nicht so wohl fühlst. Einigen Entwickler in meiner Firma geht es genauso, die schimpfen auch immer auf Web-Applikationen. ;) Wenn du es aber erst mal verinnerlicht hast, gibt es kein Zurück mehr.

Sofern ich/wir dir hier Hilfestellungen geben können, dann sag Bescheid!
Viele Grüße,
Christian

Megger
Beiträge: 1233
Registriert: 04.11.2008, 10:57:37

Re: Hilfe für APF-Neuling

Beitrag von Megger » 11.09.2009, 08:41:16

Ich denke auch, dass es gewöhnungssache ist. Ich programmiere zwischendurch auch gerne mal Desktop Anwendungen mit JAVA und ich muss sagen, da wünsche ich mir manchmal das APF :D Es gibt in JAVA bestimmt auch Frameworks, damit habe ich mich aber noch nicht so beschäftigt.
Tutorial: Browsergame mit dem APF (Die ersten Parts handeln von Installation und Inbetriebnahme des APFs, deswegen sicherlich auch für alle Nicht-Browsergame-Programmierer interessant)

APF-Version
  • Entwicklung: 2.0
  • Produktiv: 1.15

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast