Gästebuch 2009

Das Forum soll der Ablage von Lösungen für immer wieder auftauchende Problemstellungen dienen. // This forum contains solutions to problems that frequently occur.
Antworten
trx
Beiträge: 23
Registriert: 12.08.2009, 13:16:46

Gästebuch 2009

Beitrag von trx » 07.09.2009, 15:54:37

Hi,

versuche gerade das neue Gästebuch zu konfigurieren um mich mit dem GORM und der Dependency Incjection etwas vertrauter zu machen.
Bekomme allerdings immer die Fehlermeldung

Code: Alles auswählen

Message: [GuestbookManager::__mapGenericGuestbook2DomainObject()] No guestbook with id "" stored in database! Please check your guestbook tag inclusion. 
Number: 256 
File: C:\Programme\xampp\htdocs\apf1.10\apps\modules\guestbook2009\data\GuestbookMapper.php 
Line: 140 
Anscheinend enthält das Model keine ID. Habe weiter im Code gestöbert und festgestellt, dass die TagLib gb_taglib_import für das Laden des Attributes "gbid" aus dem Template in das Model zuständig ist. Allerdings habe ich keine Stelle gefunden an der diese TagLib ins Modul eingebunden wird. Ist da noch ein Bug oder stehe ich auf dem Schlauch?

Gruß
Sebastian

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

Re: Gäastebuch 2009

Beitrag von trx » 07.09.2009, 16:14:44

Man sieht manchmal den Wald vor Bäumen nicht...

hab jetzt erst bemerkt, dass <gb:import /> von <core:importdesign /> erbt. Das macht einiges klarer.

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

Re: Gäastebuch 2009

Beitrag von dr.e. » 07.09.2009, 22:10:43

Hallo Sebastian,

sorry für die späte Antwort. Ja, für das Einbinden muss die <gb:import />-Taglib genutzt werden. Für das neue Gästebuch wird demnächst ein Artikel im PHP-Journal und anschließend auf der APF-Seite erschienen. Dieser beschreibt das Design und die Implementierung nochmal im Detail. Diesem Artikel folgend wird es auch noch ein Installations-HOWTO geben.

An sich beschränkt sich dieses jedoch auf das kopieren der Konfigurationen an die richtige Stelle und die Initialisierung der Datenbank. Da auch dafür noch keine Script veröffentlicht sind, möchte ich diese gleich hier posten und den Eintrag nach FAQs verschieben.

Für das Setup der Datenbank kann folgender Code verwendet werden:

Code: Alles auswählen

   include('apps/core/pagecontroller/pagecontroller.php');
   import('modules::genericormapper::data::tools','GenericORMapperSetup');  
   $setupMapper = new GenericORMapperSetup();
   $setupMapper->set('Context','{CONTEXT}');
   $setupMapper->setupDatabase('modules::guestbook2009::data','guestbook2009','{DB-CONNECTION}');
Um die Datenbank zu initialisieren, ist folgender Code zu gebrauchen:

Code: Alles auswählen

   include('./apps/core/pagecontroller/pagecontroller.php');

   import('modules::genericormapper::data','GenericORMapperFactory');

   $ormFact = &Singleton::getInstance('GenericORMapperFactory');
   $ormFact->set('Context','phpjournal');
   $orm = &$ormFact->getGenericORMapper(
                                 'modules::guestbook2009::data',
                                 'guestbook2009',
                                 'guestbook2009'
   );

   // --- setup available languages ----------------------------------------------------------------
   $langDe = new GenericDomainObject('Language');
   $langDe->setProperty('ISOCode','de');
   $langDe->setProperty('DisplayName','Deutsch');
   $langDeId = $orm->saveObject($langDe);
   $langDe->setProperty('LanguageID',$langDeId);

   $langEn = new GenericDomainObject('Language');
   $langEn->setProperty('ISOCode','en');
   $langEn->setProperty('DisplayName','English');
   $langEnId = $orm->saveObject($langEn);
   $langEn->setProperty('LanguageID',$langEnId);

   // --- create one guestbook instance ------------------------------------------------------------
   $guestbook = new GenericDomainObject('Guestbook');

   // --- create admin account ---------------------------------------------------------------------
   $user = new GenericDomainObject('User');
   $user->setProperty('Username','admin');
   $user->setProperty('Password',md5('admin'));
   $user->setProperty('Name','Admin');
   $user->setProperty('Email','root@localhost');
   $userId = $orm->saveObject($user);
   $user->setProperty('UserID',$userId);

   // --- english attributes of the guestbook ------------------------------------------------------
   $titleEn = new GenericDomainObject('Attribute');
   $titleEn->setProperty('Name','title');
   $titleEn->setProperty('Value','My guestbook');
   $titleEn->addRelatedObject('Attribute2Language',$langEn);

   $descriptionEn = new GenericDomainObject('Attribute');
   $descriptionEn->setProperty('Name','description');
   $descriptionEn->setProperty('Value','This is my first guestbook instance of the guestbook2009 module!');
   $descriptionEn->addRelatedObject('Attribute2Language',$langEn);

   // --- german attributes of the guestbook -------------------------------------------------------
   $titleDe = new GenericDomainObject('Attribute');
   $titleDe->setProperty('Name','title');
   $titleDe->setProperty('Value','Mein Gästebuch');
   $titleDe->addRelatedObject('Attribute2Language',$langDe);

   $descriptionDe = new GenericDomainObject('Attribute');
   $descriptionDe->setProperty('Name','description');
   $descriptionDe->setProperty('Value','Dies ist die erste Instanz des neuen guestbook2009 Moduls!');
   $descriptionDe->addRelatedObject('Attribute2Language',$langDe);

   // --- save guestbook with attributes -----------------------------------------------------------
   $guestbook->addRelatedObject('Guestbook2LangDepValues',$titleEn);
   $guestbook->addRelatedObject('Guestbook2LangDepValues',$descriptionEn);
   $guestbook->addRelatedObject('Guestbook2LangDepValues',$titleDe);
   $guestbook->addRelatedObject('Guestbook2LangDepValues',$descriptionDe);

   $orm->saveObject($guestbook);
Diese Vorgehensweise ist bei allen GORM-basierten Data-Mappern möglich. Sollte dir noch Information fehlen, sag einfach Bescheid. Den Artikel schicke ich dir gleich als PM.
Viele Grüße,
Christian

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste