TagLib

Hier dreht sich alles um die auf der Webseite veröffentlichten Tutorials. // This forum is all about the APF tutorials.
jprangenberg
Beiträge: 410
Registriert: 16.08.2010, 22:14:54

TagLib

Beitrag von jprangenberg » 17.08.2010, 10:43:32

Hallo zusammen,

hier meine erste Frage.
Bin in dem Tutorial-Bereich bis zu dem TagLib-Tutorial gekommen und verstehe aus dem TagLib-Tutorial nicht, was dies überhaupt ist. Bin in der Zeit vor dem APF mit einem TagLib noch nicht in Berührung gekommen.

Vielen Dank für eure Zeit.

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

Re: TagLib

Beitrag von dr.e. » 17.08.2010, 13:10:14

Hallo xe0n,

sicher hat du in einer der Tutorials schon etwas in der Art

Code: Alles auswählen

<core:importdesign .../>
gesehen. Eine Taglib/ein Tag (beides sind Synonyme) ist die Template-Sprache des APF, die dir das Aufbauen einer beliebigen GUI-Struktur erlaubt. Die Tags haben dabei einen Prefix (hier: core) und eine Klassen-Angabe (hier: importdesign). Das APF liefert dabei bereits alle wichtigen Mittel mit, die du für die Erstellung von Webseiten und Web-Applikationen benötigst. Tags bzw. Taglibs schreibst du also nur dann, wenn du mit den vorhandenen Tags und einem zugehörigen Controller nicht mehr weiter kommst.

Sollte eine Aktion oder eine Funktion nicht mehr über die Standard-tags abbildbar sein, kannst du eine eigene schreiben. Das ist in der Regel dann der Fall, wenn du den Aufbau des DOM-Baumes beeinflussen möchtest. Unter de/viewtopic.php?f=5&t=37&p=114 findest du ein paar weitere Erläuterungen und eine Daumen-Regel, wann du Taglibs selbst schreiben solltest.

Grundsätzlich kommst du am Anfang aber sicher ohne aus.
Viele Grüße,
Christian

jprangenberg
Beiträge: 410
Registriert: 16.08.2010, 22:14:54

Re: TagLib

Beitrag von jprangenberg » 18.08.2010, 17:35:30

Danke dir!

Habe noch eine Frage!

Und zwar wie setzt sich der Name der ".html" Datei zusammen?: /frontend/content/c_de_impressum.html. Wieso c? Was passiert wenn ich c_e_... mache?

Wie kann man das verstehen!?

Code: Alles auswählen

<core:addtaglib namespace="tools::html::taglib" prefix="doc" class="createobject" />
<doc:createobject requestparam="Seite" defaultvalue="Startseite" />

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

Re: TagLib

Beitrag von dr.e. » 18.08.2010, 21:33:52

Hallo xe0n,
Und zwar wie setzt sich der Name der ".html" Datei zusammen?: /frontend/content/c_de_impressum.html. Wieso c? Was passiert wenn ich c_e_... mache?
Die hier eingesetzte Taglib setzt den Namen aus dem genannten Ordner, der aktuellen Sprache und dem Inhalt des Request-Parameters (definiert durch requestparam) zusammen. Der Anwendungsfall des Tags ist jedoch recht eingeschränkt, da der Ordner hart im Code verdrahtet ist. Um dynamischer Templates einzubinden, eignen sich <core:importdesign /> oder <generic:importdesign /> besser.

Was möchtest du denn realisieren?
Viele Grüße,
Christian

jprangenberg
Beiträge: 410
Registriert: 16.08.2010, 22:14:54

Re: TagLib

Beitrag von jprangenberg » 18.08.2010, 22:13:31

Ich möchte einfach das Tutorial genaustens verstehen! Also steht das "c" für Content, das "de" für Deutsch und das "impressum" wegen des Requestes. Verstanden!

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

Re: TagLib

Beitrag von dr.e. » 18.08.2010, 22:33:07

Hallo xe0n,

du hast das korrekt verstanden.
Viele Grüße,
Christian

jprangenberg
Beiträge: 410
Registriert: 16.08.2010, 22:14:54

Re: TagLib

Beitrag von jprangenberg » 18.08.2010, 23:37:58

Und noch eine Frage zu meinem ersten Controller.

Code: Alles auswählen

<?php
import('core::database','MySQLHandler');

class content_v1_controller extends base_controller {

   function content_v1_controller(){
   }

   function transformContent(){

      // Instanz der Datenbank-Abstraktionsklasse holen
      $SQL = $this->__getServiceObject('core::database','MySQLHandler');

      // URL-Parameter beziehen
      $page = RequestHandler::getValue('Seite','Startseite');

      // Parameter gegen SQL-Injections absichern
      $page = $SQL->escapeValue($page);

      // Inhalt der Seite auslesen
      $select = 'SELECT PageContent
                 FROM demopage_content
                 WHERE PageURLName = \''.$page.'\'
                 LIMIT 1';
      $result = $SQL->executeTextStatement($select);
      $data = $SQL->fetchData($result);

      // Inhalt der Seite ausgeben
      $this->__Content = $data['PageContent'];

   }
}
?>
[import()] The given module (/Applications/MAMP/htdocs/APF/apps/core/database/MySQLHandler.php) cannot be loaded!
MySQLHandler.php gibt es auch nicht. Nur "MysqlxHandler.php" und "MysqliHandler.php".
Was nun?


jprangenberg
Beiträge: 410
Registriert: 16.08.2010, 22:14:54

Re: TagLib

Beitrag von jprangenberg » 19.08.2010, 07:06:53

Wenn ich diesen beim Import und im Quelltext erstetze, wird ein Fehler erzeugt. Werde Ihn heute Abend posten. Danke euch allen!

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

Re: TagLib

Beitrag von dr.e. » 19.08.2010, 12:31:34

Hallo xe0n,

die Verwendung des MySQLHandlers bzw. MySQLxHandler ist in der Form veraltet. Mit dem Release 1.11 sollte dieser nur noch über den ConnectionManager bezogen werden. Andernfalls erhälst du eine nicht korrekt initialisierte Datenbank-Connection.
Viele Grüße,
Christian

jprangenberg
Beiträge: 410
Registriert: 16.08.2010, 22:14:54

Re: TagLib

Beitrag von jprangenberg » 19.08.2010, 16:54:49

Wieso steht das dann dort in den Tutorials? :-(
Er stürtzt ab, da er den Requesthandler nicht findet.

Wie soll dass denn mit dem ConnectionManager funktionieren? Komme nicht argh weit.
Ini ist erstellt. Weiter komme ich nicht! Würde jemand mal eine kleine Demo machen?

jprangenberg
Beiträge: 410
Registriert: 16.08.2010, 22:14:54

Re: TagLib

Beitrag von jprangenberg » 19.08.2010, 18:25:42

Sorry für den Doppelpost:

Uncaught exception!
Exception-ID: 07d698754db46799bc24e27d3b347411
Type: InvalidArgumentException
Message: [ConfigurationManager->getConfiguration()] Requested configuration with name "DEFAULT_connections.ini" cannot be loaded from namespace "core::database" with context "sites::testwebsite::pres::templates"!
Number: 256
File: /Applications/MAMP/htdocs/APF/apps/core/configuration/ConfigurationManager.php
Line: 257
Die DEFAULT_connections.ini liegt aber unter:

APF/apps/core/database/sites/testwebsite/pres/templates/DEFAULT_connections.ini

Was ist denn falsch? -.-

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

Re: TagLib

Beitrag von Megger » 19.08.2010, 18:29:20

Die DEFAULT_connections.ini sollte im config Ordner liegen, also

APF/apps/config/core/database/sites/testwebsite/pres/templates/DEFAULT_connections.ini
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

jprangenberg
Beiträge: 410
Registriert: 16.08.2010, 22:14:54

Re: TagLib

Beitrag von jprangenberg » 19.08.2010, 18:38:44

Was mache ich falsch?

Code: Alles auswählen

<?php
import('core::database','ConnectionManager');

class content_v1_controller extends base_controller {

   function content_v1_controller(){
   }

   function transformContent(){
      
      // Instanz der Datenbank-Abstraktionsklasse holen
      $cM = &$this->__getServiceObject('core::database','ConnectionManager');
      $driver = &$cM->getConnection('MySQL');

   }
}
?>
Uncaught exception!
Exception-ID: 23789f5c3d0d893f5a6369d4022aedd7
Type: IncludeException
Message: [import()] The given module (/Applications/MAMP/htdocs/APF/apps/core/database/MySQLHandler.php) cannot be loaded!
Number: 256
File: /Applications/MAMP/htdocs/APF/apps/core/pagecontroller/pagecontroller.php
Line: 178

EDIT: ICH HABE ES! Geht es nun genau so wie im Tutorial weiter?

EDIT: SO WEIT BIN ICH! WIE gehts weiter?

Code: Alles auswählen

<?php
import('core::database','ConnectionManager');
import('tools::request','RequestHandler');

class content_v1_controller extends base_controller {

   function content_v1_controller(){
   }

   function transformContent(){
      
      // Instanz der Datenbank-Abstraktionsklasse holen
      $cM = &$this->__getServiceObject('core::database','ConnectionManager');
      $driver = &$cM->getConnection('MySQLx');

      // URL-Parameter beziehen
      $page = RequestHandler::getValue('Seite','Startseite');


   }
}
?>

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

Re: TagLib

Beitrag von Screeze » 19.08.2010, 19:08:49

jetzt gehts ganz normal, weiter, musst blos den variablenname vom datenbanktreiber anpassen an deinen.
Die verwendung ist genauso wie im tutorial.

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast