Einsteigerfreundliches Tutorial - Von 0 auf 100

Hier dreht sich alles um die auf der Webseite veröffentlichten Tutorials. // This forum is all about the APF tutorials.
Benutzeravatar
dr.e.
Administrator
Beiträge: 4527
Registriert: 04.11.2007, 16:13:53

Re: Einsteigerfreundliches Tutorial - Von 0 auf 100

Beitrag von dr.e. » 14.07.2015, 22:15:08

Hallo Kigh,
Seh ich nur den Wald vor lauter Bäumen nicht oder wo liegt hier der Fehler ???
Ich denke ja! ;) In deiner Methode getPageId() holst du aktuell nur einen Datensatz von der Datenbank ab. Versuche es mal mit

Code: Alles auswählen

private function getPageId($conn, $result){
   $data = [];
   while($entry = $conn->fetchData($result)) {
      $data[] = $entry['page_id'];
   }
   return $data;
} 
Viele Grüße,
Christian

Benutzeravatar
Kighlander
Beiträge: 35
Registriert: 11.07.2015, 16:55:44
Wohnort: Hilter aTW

Re: Einsteigerfreundliches Tutorial - Von 0 auf 100

Beitrag von Kighlander » 15.07.2015, 05:16:12

Hallo Dr.e

Jap, das war es.

Und ich habe in der Doku nach einer schon implementierten Funktion gesucht, die GLEICH ALLES ausliest und nicht nur einen Datensatz ;)

Dann kann es heute Abend weiter gehen !!!

Danke,

Kigh
Das Vögel des Kummers und der Sorgen über Deinem Kopf kreisen, kannst Du nicht verhindern.
Du kannst aber verhindern, dass sie Nester auf Deinem Kopf bauen.
(Chin. Sprichwort)
---
Je mehr Selbstmörder, desto weniger Selbstmörder. :D
(Homer Simpson)

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

Re: Einsteigerfreundliches Tutorial - Von 0 auf 100

Beitrag von dave » 15.07.2015, 06:06:44

Um Daten aus der Datenbank zu holen gibt es ein ziemliche geniales Tool. Den GenericORMapper, kurz GORM. Allerdings ist die Konfiguration dessen nicht so einfach und ziemlich umfangreich. Damit lassen sich aber sehr bequem Daten in die Datenbank schreiben, lesen und ändern. Und du kannst ganz bequem komplizierte Abfrage mit mehreren JOINS etc. aufbauen.

Benutzeravatar
Kighlander
Beiträge: 35
Registriert: 11.07.2015, 16:55:44
Wohnort: Hilter aTW

Re: Einsteigerfreundliches Tutorial - Von 0 auf 100

Beitrag von Kighlander » 16.07.2015, 17:58:28

Moin.
Nachdem ich gesten nicht wirklich Zeit hatte, mich mit a) meinre Seite und b) diesem Tutorial zu widmen, habe ich mich heute daran versucht, die Benutzerverwaltung zu integrieren.
Ich habe mich versucht an die Dokumentation zu halten, aber ich weiß einfach nicht, wie ich diese nun in mein recht bescheidenes Beispiel einbauen soll. Hier bedarf es dann wirklich einer KONKRETEN Schritt für Schritt Anleitung und nicht wie in der Doku beschrieben.

Da ich mich ja für die manuelle Installation entschieden habe, bin ich in der Doku bis zum Punkt 3.2.2.1 gekommen.

Nur um Sicherzustellen, dass ich bei 3.2.1 nichts gravierendes verkehrt gemacht habe, erläutere ich mal eben hier meine Vorgehensweise:

Statt einer neuen Sektion habe ich hier auf meine BESTEHENDE Sektion zurückgegriffen, so wie ich sie in der DEFAULT_connections.ini beschrieben habe.

Diesen Sektionsnamen habe ich dann in meiner DEFAULT_serviceobjects.ini unter

Code: Alles auswählen

conf.db.method = "setConnectionName"
conf.db.value = "kighlandersql2" // <--- hier
eingesetzt. Ich denke, bis hierher war es auch alles kein Problem.

Aber alles was danach kommt, da hab ich nur noch Bahnhof verstanden...

An dieser Stelle sollten wir also eingreifen.

Gruß,

Kigh
Das Vögel des Kummers und der Sorgen über Deinem Kopf kreisen, kannst Du nicht verhindern.
Du kannst aber verhindern, dass sie Nester auf Deinem Kopf bauen.
(Chin. Sprichwort)
---
Je mehr Selbstmörder, desto weniger Selbstmörder. :D
(Homer Simpson)

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

Re: Einsteigerfreundliches Tutorial - Von 0 auf 100

Beitrag von dr.e. » 16.07.2015, 21:17:35

Hallo Kigh,

bin gerade erst nach Hause gekommen. Lass mich dir gleich helfen...
Viele Grüße,
Christian

Benutzeravatar
Kighlander
Beiträge: 35
Registriert: 11.07.2015, 16:55:44
Wohnort: Hilter aTW

Re: Einsteigerfreundliches Tutorial - Von 0 auf 100

Beitrag von Kighlander » 16.07.2015, 21:23:35

Keine Hektik ;)
Das Vögel des Kummers und der Sorgen über Deinem Kopf kreisen, kannst Du nicht verhindern.
Du kannst aber verhindern, dass sie Nester auf Deinem Kopf bauen.
(Chin. Sprichwort)
---
Je mehr Selbstmörder, desto weniger Selbstmörder. :D
(Homer Simpson)

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

Re: Einsteigerfreundliches Tutorial - Von 0 auf 100

Beitrag von dr.e. » 16.07.2015, 21:36:37

Das UMGT-Modul basiert auf dem GORM. Es besitzt eine zentrale Komponente UmgtManager über den alle Aktionen innerhalb des Moduls abgewickelt werden und eine GUI, die zur Verwaltung der Benutzer, Gruppen, Rollen und Berechtigungen genutzt werden kann. Alles, was du über die GUI tun kannst ist auch ohne weiteres programmatisch über die Applikation möglich. Diese Mechnismen nutzen wir später um das UMGT in deine Anwendung zu integrieren.
Statt einer neuen Sektion habe ich hier auf meine BESTEHENDE Sektion zurückgegriffen, so wie ich sie in der DEFAULT_connections.ini beschrieben habe.

Diesen Sektionsnamen habe ich dann in meiner DEFAULT_serviceobjects.ini unter

Code: Alles auswählen
conf.db.method = "setConnectionName"
conf.db.value = "kighlandersql2" // <--- hier

eingesetzt. Ich denke, bis hierher war es auch alles kein Problem.
Das klingt sehr gut! :)

Für die weiteren Konfigurationen empfehle ich dir das apf-configpack-3.0.tar.gz herunterladen und alles im Ordner modules/usermanagement/* als Vorlage nutzen. Diese decken bereits 95% des Konfigurations-Aufwands ab.

Der Eintrag in DEFAULT_serviceobjects.ini ist absolut korrekt. Dieser referenziert die Datenbank, die vom GORM genutzt werden soll.

In der DEFAULT_serviceobjects.ini solltest du

Code: Alles auswählen

[LoginRedirectUrlProvider]
servicetype = "NORMAL"
class = "..."

[LogoutRedirectUrlProvider]
servicetype = "NORMAL"
class = "..."
zunächst auskommentieren, diese brauchen wir erst später für das Login-Modul.

Damit ist schon mal ein großer Schritt erreicht.

Kleiner Nachtrag: Die Beispiel-Dateien aus dem apf-configpack-3.0.tar.gz sollten noch umbenannt werden damit diese zu deinem Setup passen. Hierzu tauschst du einfach das EXAMPLE durch DEFAULT aus.
Viele Grüße,
Christian

Benutzeravatar
Kighlander
Beiträge: 35
Registriert: 11.07.2015, 16:55:44
Wohnort: Hilter aTW

Re: Einsteigerfreundliches Tutorial - Von 0 auf 100

Beitrag von Kighlander » 16.07.2015, 21:42:28

Das bedeutet also, dass ich aus dem demo-pack alle inhalte in meine Dateien (die ja schon die Struktur mit dem Kontext "siteone" haben) kopieren muss, damit die Konfiguration damit erledigt ist ?
Das Vögel des Kummers und der Sorgen über Deinem Kopf kreisen, kannst Du nicht verhindern.
Du kannst aber verhindern, dass sie Nester auf Deinem Kopf bauen.
(Chin. Sprichwort)
---
Je mehr Selbstmörder, desto weniger Selbstmörder. :D
(Homer Simpson)

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

Re: Einsteigerfreundliches Tutorial - Von 0 auf 100

Beitrag von dr.e. » 16.07.2015, 21:50:19

Nächster Schritt ist das Setup und die Initialisierung der Datenbank. Hier hilft dir der GORM ungemein. Basierend auf einer Objekt- und Beziehungs-Definition in EXAMPLE_umgt_objects.ini und EXAMPLE_umgt_relations.ini kann er die Datenbank selbständig verwalten (anlegen, aktualisieren, Objekte und Beziehungen anlegen, ändern, löschen, ...). Für das initiale Setup schlage ich vor ein kleines PHP-Skript anzulegen, das sich um die Initialisierung und Anlage der notwendigen Strukturen kümmert. Das geht wie folgt:

Code: Alles auswählen

use APF\modules\genericormapper\data\tools\GenericORMapperManagementTool;
use APF\modules\usermanagement\biz\model\UmgtApplication;
use APF\modules\usermanagement\biz\model\UmgtUser;
use APF\modules\usermanagement\biz\UmgtManager;

include_once('./APF/core/bootstrap.php');

// *** Setup/initialize database ***************************************************************************************
/* @var $setup GenericORMapperManagementTool */
$setup = &$this->getServiceObject('APF\modules\genericormapper\data\tools\GenericORMapperManagementTool');
$setup->addMappingConfiguration('APF\modules\usermanagement\data', 'umgt');
$setup->addRelationConfiguration('APF\modules\usermanagement\data', 'umgt');
$setup->setConnectionName('kighlandersql2');
$setup->run(true);

// *** Create initial application **************************************************************************************
/* @var $umgt UmgtManager */
$umgt = &$this->getDIServiceObject('APF\modules\usermanagement\biz', 'UmgtManager');

$app = new UmgtApplication();
$app->setDisplayName('User database');
$umgt->saveApplication($app);

// *** Create initial user *********************************************************************************************
$user = new UmgtUser();
$user->setUsername('...your user name...');
$user->setPassword('...your password...');

// assume typical user attributes to have valid display in mgmt backend!
$user->setFirstName('First');
$user->setLastName('User');
$user->setDisplayName('First user');

$umgt->saveUser($user);
Im ersten Schritt wird die Datenbank initialisiert. Das bedeutet, dass der GORM alle Tabellen anlegt, die für das Datenmodell benötigt werden. Anschließend erzeugst du dir den UmgtManager (siehe mein letzter Post) und erzeugst die Instanz deiner Applikation. Das ist notwendig, da das Datenmodell und auch der UmgtManager die Benutzer, Gruppen und Rollen für mehrere Applikationen parelle verwalten kann. Welche Benutzer zu deiner Applikation gehören legst du darüber fest.

Im letzten Schritt legst du einen ersten Benutzer an. Das kannst du natürlich beliebig ausbauen und auch Gruppen per Skript anlegen. Einfacher geht das natürlich mit der GUI.
Viele Grüße,
Christian

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

Re: Einsteigerfreundliches Tutorial - Von 0 auf 100

Beitrag von dr.e. » 16.07.2015, 21:52:30

Kighlander hat geschrieben:Das bedeutet also, dass ich aus dem demo-pack alle inhalte in meine Dateien (die ja schon die Struktur mit dem Kontext "siteone" haben) kopieren muss, damit die Konfiguration damit erledigt ist ?
Im Prinzip ja. Wichtig ist nur, dass du die Ordner-Struktur jeweils um den Ordner siteone ergänzt. Beispiel: aus modules/usermanagement/biz/EXAMPLE_actionconfig.ini wird modules/usermanagement/biz/siteone/DEFAULT_actionconfig.ini usw.
Viele Grüße,
Christian

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

Re: Einsteigerfreundliches Tutorial - Von 0 auf 100

Beitrag von dr.e. » 16.07.2015, 21:55:35

Als letzten Schritt binden wir nun auf einer definierten Seite die GUI ein. Hierzu legst du ein neues Template in deiner Struktur an und füllst dieses mit folgendem Code:

Code: Alles auswählen

<h2>Benutzer-Verwaltung</h2>

<core:importdesign namespace="APF\modules\usermanagement\pres\templates" template="menu" />

<div class="umgt-content">
   <core:addtaglib
      class="APF\modules\usermanagement\pres\taglib\UmgtMediaInclusionTag"
      prefix="umgt"
      name="media"
   />
   <core:importdesign
      namespace="APF\modules\usermanagement\pres\templates"
      template="[mainview = user]"
      incparam="mainview"
   />
</div>
Darüber wird das Menü, die notwendigen Medien (Icons) und der Inhalts-Bereich des Moduls eingebunden. Die Konfigurationen findet die GUI automatisch an Hand des Schlüssels UmgtManager in der DEFAULT_serviceobjects.ini-Datei.

Nachdem du bereits einen Benutzer angelegt hast, solltest du diesen nun in der Liste der Benutzer sehen. Wie die GUI funktioniert kannst du unter http://adventure-php-framework.org/Seit ... -Frontends nachlesen. Fragen dazu immer gerne! :)
Viele Grüße,
Christian

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

Re: Einsteigerfreundliches Tutorial - Von 0 auf 100

Beitrag von dr.e. » 16.07.2015, 21:57:28

Als nächsten Schritt schlage ich das Anlegen der Benutzer und Gruppen vor. Anschließend können wir uns um das Login und die Einbindung in deine Applikation kümmern. Hierzu wäre es interessant zu wissen, was du genau vor hast.

Als Hilfestellung kann ich dir die Sandbox ans Herz legen. Dort ist das Modul komplett integriert und du findest im Quellcode einige Beispiele wie das Modul verwendet werden kann. Das können wir aber gerne Schritt für Schritt hier besprechen.
Viele Grüße,
Christian

Benutzeravatar
Kighlander
Beiträge: 35
Registriert: 11.07.2015, 16:55:44
Wohnort: Hilter aTW

Re: Einsteigerfreundliches Tutorial - Von 0 auf 100

Beitrag von Kighlander » 16.07.2015, 22:04:52

Für heute wird mir das zu spät, ich werde das morgen ausprobieren und testen und meine Ergebnisse hier präsentieren...
Danke schonmal ;)
Das Vögel des Kummers und der Sorgen über Deinem Kopf kreisen, kannst Du nicht verhindern.
Du kannst aber verhindern, dass sie Nester auf Deinem Kopf bauen.
(Chin. Sprichwort)
---
Je mehr Selbstmörder, desto weniger Selbstmörder. :D
(Homer Simpson)

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

Re: Einsteigerfreundliches Tutorial - Von 0 auf 100

Beitrag von dr.e. » 19.07.2015, 12:05:48

Sag Bescheid, wenn du weiter machen möchtest! :)
Viele Grüße,
Christian

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

Re: Einsteigerfreundliches Tutorial - Von 0 auf 100

Beitrag von dave » 20.07.2015, 13:00:45

Na ich hoffe ihn hat das nicht zu sehr verschreckt.
Die Konfiguration dazu ist am Anfang extrem kompliziert, wenn man eben Programmierung nicht studiert hat und nur aus Spass an der Sache daran betreibt. Eine GUI zum GORM wäre nicht schlecht, allerdings wüsste ich nicht, wie diese aussehen könnte.

Insgesamt ist deine Postings, Christian, aber wie immer sehr ausführlich. Spitze :)

PS: Ich bin dann nun auch wieder zurück und behalte den Thread im Auge.

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast