Tutorial für ein Webseite mit 2 Bereichen

Hier dreht sich alles um die auf der Webseite veröffentlichten Tutorials. // This forum is all about the APF tutorials.
abstractmedia
Beiträge: 18
Registriert: 21.08.2011, 23:46:55

Tutorial für ein Webseite mit 2 Bereichen

Beitrag von abstractmedia » 24.08.2011, 00:21:39

Hi liebe APF Community
ich habe vor ein paar Tagen das APF endeckt und muss sagen durch die ersten Hilfestellungen hier aus dem Forum klappt momentan alles eigentlich wunderbar.

Nachdem ich nun die meisten Tutorials hier auf der Seite durchhabe, und auch die Doku gelesen habe, stellt sich mir aber immer noch eine Frage welche ich nicht ganz verstehe.

Wie erstelle ich für eine Webseite 2 Bereiche (Frontend & Backend). So das diese dann auch normal aufgerufen werden können.

Frontend: http://meineulr.de
Backend: http://meineurl.de/admin/

Ich habe auch schon den Thread mit dem Backend Tutorial (viewtopic.php?f=4&t=363) gelesen aber meine Frage beantwortet das leider auch nicht so richtig

Desweiteren ist mir noch nicht ganz klar wie ich die einzelnen CSS Dateien und Images der Bereiche unterbringe, und wie man am besten darauf reagiert wenn man ein Modulares System bauen möchte. Dann sollte man ja auch irgendwo die Images, CSS, JS, what ever Dateien in den Modulen speichern oder??

Ich freue mich schon auf eure Ausführlichen Antworten :D


Lieben Gruß
Flo

APFelsahne
Beiträge: 222
Registriert: 18.03.2010, 13:13:07
Wohnort: Ludwigshafen am Rhein
Kontaktdaten:

Re: Tutorial für ein Webseite mit 2 Bereichen

Beitrag von APFelsahne » 24.08.2011, 09:30:54

Also zur Trennung von Frontend und Backend gibt es mehrere Wege.
Über das APF direkt kannst du das zum Beispiel ansteuern, in dem du das Template-Tag benutzt. Innerhalb des Template-Tag kann man dann auch zum Beispiel mit dem Importdesign-Tag arbeiten. Den gwünschten Template-Tag stellst du dann anhand einer Prüfung der URL dar.
Im Bootstrap kannst du dazu noch festlegen, dass wenn der erste Parameter deiner URL den Wert "admin" hat, dass eine Action zur Überprüfung der Berechtigung abläuft, so dass man nicht einfach zugriff auf den Adminbereich hat, wenn er zugreifen will ohne Berechtigung, kannst du ja auf den Loginscreen verweisen.
Grüße, Florian
BildAPF-Extension wsCatalyst

abstractmedia
Beiträge: 18
Registriert: 21.08.2011, 23:46:55

Re: Tutorial für ein Webseite mit 2 Bereichen

Beitrag von abstractmedia » 24.08.2011, 09:38:19

kannst du mir dazu zufällig ein Beispiel geben wie man sowas bewerkstelligen kann??

APFelsahne
Beiträge: 222
Registriert: 18.03.2010, 13:13:07
Wohnort: Ludwigshafen am Rhein
Kontaktdaten:

Re: Tutorial für ein Webseite mit 2 Bereichen

Beitrag von APFelsahne » 24.08.2011, 10:07:29

hi, also erstmal kommen da paar verschiedene elemente zusammen, du musst dir dann selbst überlegen was du möchtest.
die berechtigungsprüfung beispielsweise lässt sich sowohl in eine action auslagern, als auch schlicht in einem documentcontroller lösen, wo sie wirklich hingehört, sei mal dahingestellt.
um überhaupt innerhalb einer unterseite verschiedene templates ansteuern zu können, baut man das wie folgt aus (http://adventure-php-framework.org/Seit ... sche-Views) (dazu sei auch gesagt, selbst hier, gibt es mehrere wege das ganze zu realisieren):
Basislayout:

Code: Alles auswählen

<core:importdesign namespace="sites::app-project::pres::templates" template="page=start" incparam="page" />
In dem Fall kannst du dann eine Unterseite "admin.html" bastel:

Code: Alles auswählen

<@controller .... />
...
<html:template name="login_form">
 ...
</html:template>
<html:template name="admin_content">
 ...
</html:template>
In dem zugehörigen Controller lädst du dann das Template deiner Wahl:

Code: Alles auswählen

class AdminController extends base_controller 
{ 
   public function transformContent()
   { 
      $sTemplate = 'login_form';
      // Berechtigungspruefung, hier nur Platzhalter
      if( USER_IS_ADMIN === true ) $sTemplate = 'admin_content';
      $oTemplate = $this->getTemplate($sTemplate); 
      $oTemplate->transformOnPlace(); 
   } 
}

Das Ganze als ein Beispiel, und auch wirklich (ich wiederhole mich gerne) als einer der möglichen Wege :)
Hoffe das hilft dir aber erstmal weiter, bin auch gespannt wie andere das ganze lösen würden :)
Grüße, Florian
BildAPF-Extension wsCatalyst

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

Re: Tutorial für ein Webseite mit 2 Bereichen

Beitrag von Screeze » 24.08.2011, 10:09:01

Hi,
ich würde das folgendermaßen angehen:

Du hast eine einzige Bootstrap datei (index.php)
Per UrlRewriting/Input Filter mappst du die url /admin/ z.b. auf ?admin=true, da du key=> value paare benötigst in der url.

Deine index.php läd ein Haupttemplate, nennen wir es index.html.

Dieses Template bekommt ein <generic:importdesign /> tag, und das entsprechende Model, welches dieser tag nutzt, prüft ob dieser admin Parameter vorhanden ist, Falls ja, wird geprüft, ob der Nutzer überhaupt Admin rechte hat. Falls dem nicht so ist, wird ein Login eingebunden. Sollte der admin Parameter nicht gesetzt sein, wird das frontend-Haupttemplate eingebunden.

edit: zu langsam, aber dafür eine alternative Möglichkeit

@APFselsahne:
n dem zugehörigen Controller lädst du dann das Template deiner Wahl:

Code: Alles auswählen

if( USER_IS_ADMIN === true )
Ich hoffe das war nur ein Beispiel ;) Wenn man die Login Komponente des APF nutzt sieht das anders aus.

APFelsahne
Beiträge: 222
Registriert: 18.03.2010, 13:13:07
Wohnort: Ludwigshafen am Rhein
Kontaktdaten:

Re: Tutorial für ein Webseite mit 2 Bereichen

Beitrag von APFelsahne » 24.08.2011, 11:52:44

Screeze hat geschrieben: @APFselsahne:
n dem zugehörigen Controller lädst du dann das Template deiner Wahl:

Code: Alles auswählen

if( USER_IS_ADMIN === true )
Ich hoffe das war nur ein Beispiel ;) Wenn man die Login Komponente des APF nutzt sieht das anders aus.
ja ;D sollte nur als Platzhalter für die Prüfung dienen :)
Grüße, Florian
BildAPF-Extension wsCatalyst

abstractmedia
Beiträge: 18
Registriert: 21.08.2011, 23:46:55

Re: Tutorial für ein Webseite mit 2 Bereichen

Beitrag von abstractmedia » 24.08.2011, 14:56:15

hat man denn eigentlich auch die möglichkeit für jedes modul eine eigene bootstrap anzulegen oder macht das wenig sinn?

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

Re: Tutorial für ein Webseite mit 2 Bereichen

Beitrag von Megger » 24.08.2011, 15:09:41

Mit Modul meinst du frontend und backend?
Kann man natürlich machen, ich persönlich nutze aber lieber einen Einstiegspunkt und nicht mehrere! Mehrere Bootstrap Dateien wären sicherlich interessant, wenn man verschiedene frontends auf mehreren Servern verteilt und für alles nur 1 backend haben will!

Wenn du nicht frontend und backend meinst, dann verstehe ich nicht was du uns sagen willst!
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

abstractmedia
Beiträge: 18
Registriert: 21.08.2011, 23:46:55

Re: Tutorial für ein Webseite mit 2 Bereichen

Beitrag von abstractmedia » 24.08.2011, 16:24:24

doch das meinte ich :D

Aber nachdem ich nun nochmal das Tutorial mit der erstellung der Webseite gemacht habe, hat es nun glaube ich klick gemacht. Es ist halt ein wenig undurchsichtig für was welche funktionen genau stehen. Habe vorher mit Kohana und Yii gearbeitet. Aber ich denke das ist nur eine Frage der zeit bis ich da rein komme :D.
Solange muss ich euch halt alle nerven :D

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

Re: Tutorial für ein Webseite mit 2 Bereichen

Beitrag von Megger » 24.08.2011, 16:32:47

Es ist halt ein wenig undurchsichtig für was welche funktionen genau stehen.
Solltest du irgendetwas nicht verstehen oder etwas komisch formuliert sein, sei es Dokumentation, Tutorial, Wiki-Eintrag oder sonstiges, dann sag Bescheid, wir werden dann versuchen es dir zu erklären bzw. den entsprechenden Eintrag so anpassen, dass er verständlicher ist.

Mit Kohana habe ich mich zwischenzeitlich auch mal beschäftigt, konnte da auch nach ein bisschen Einarbeitungszeit auch etwas mit anfangen und verschiedene Aufgaben erledigen, allerdings hat es mir bezüglich mehrerer Dinge nicht gefallen:
1. PHP Code in den Templates -> Ist schnell und einfach zu erlernen, verleitet aber dazu viel Logik in die View Komponente zu stecken
1. Routen -> Das ist das einzige wo ich noch nicht durchgestiegen bin, welche Möglichkeiten es mir bietet usw. Habe mich dann aber auch nicht mehr damit 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

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

Re: Tutorial für ein Webseite mit 2 Bereichen

Beitrag von dave » 24.08.2011, 21:11:15

Sei unbesorgt: Dumme Fragen gibt es nicht. Und wer nicht fragt, warum, bleibt dumm! :) DAher ist es völlig in Ordnung, Dinge zu hinterfragen. Erst dadurch kann man auf gewisse Umstände reagieren und diese auch dokumentarisch anpassen.

abstractmedia
Beiträge: 18
Registriert: 21.08.2011, 23:46:55

Re: Tutorial für ein Webseite mit 2 Bereichen

Beitrag von abstractmedia » 28.08.2011, 22:53:44

Also ich muss diesen Bereich nochmal aufleben lassen. Ich hab das noch immer net so geschnallt wie ich es gerne würde.

Ich verstehe das Prinzip nicht so ganz. Wenn ich 2 Bereiche bauen will (Frontend & Backend) wie stell ich das mit den Ordnern am besten an? Es muss ja irgendwie möglich sein das ich per http://meineurl.de auf das Frontend komme und per http://meineurl.de/admin eben in den Adminbereich. Ich brauch ja eigentlich kein wirkliches Main Template dafür da ich dies ja für jeden Bereich anlegen würde. Dennoch ist mir nicht ganz klar wie das ganze umgesetzt werden muss. Kann mir zufällig jemand ein etwas ausführlicheres Beispiel dafür geben. Es soll halt am Ende so sein das ich unabhängig von den beiden Bereichen noch weitere Module einbauen kann. Ob die dann mit in den Ordner des jeweiligen Bereichs wandern ist mir noch nicht ganz klar, aber im Grund sollte es doch eigentlich gehen wenn ich folgende Ordnerstruktur habe:

Code: Alles auswählen

apps
    sites
        backend
            pres
                documentcontroller
                templates
        frontend
            pres
                documentcontroller
                templates
Sehr viel mehr Ordner unterhalb von sites bräuchte man ja nicht oder?? Desweiteren besteht meine einzigste Bootstrap aus folgendem Inhalt:

Code: Alles auswählen

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

import('core::frontcontroller', 'Frontcontroller');
$fC = &Singleton::getInstance('Frontcontroller');
$fC->setContext(); //Hier weiß ich zum Beispiel auch nicht was da rein soll am besten

echo $fC->start('sites::frontend::pres::templates', 'index');
 
In wieweit müsste ich das alles abändern damit ich mit einer Bootstrap meine 2 Bereiche ansteuern kann? Denn er lädt ja auch nur das Main Template aus dem Frontend.


Ich freue mich auf eure Antworten
Gruß
Flo

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

Re: Tutorial für ein Webseite mit 2 Bereichen

Beitrag von Screeze » 28.08.2011, 23:01:33

Das Zauberwort heißt mod_rewrite.
Mithilfe dieser Apache Erweiterung, kannst du in einer .htaccess Datei eingehende Anfragen umschreiben.
Der Trick ist, dass du eingehende Anfragen auf den Ordner /admin umschreibst, auf eine Url wie z.b.:

von:
example.com/admin/userlist
auf:
example.com/index.php?page=admin&adminpage=userlist

Wenn du jetzt ein Haupttemplate hast, welches anhand des Parameters "page" ein Template z.B. in einem bestimmten Ordner aufruft, kannst du dort das Template "admin.html" erstellen, welches dann die Ausgabe des Admin Bereichs steuert oder von anderer Stelle einbindet.

Das APF unterstützt ein Standardlayout für das Rewriting, siehe: http://adventure-php-framework.org/Seit ... -Rewriting

Hilft dir das?

abstractmedia
Beiträge: 18
Registriert: 21.08.2011, 23:46:55

Re: Tutorial für ein Webseite mit 2 Bereichen

Beitrag von abstractmedia » 28.08.2011, 23:10:24

mit anderen worten baue ich meine ordner struktur wie folgt auf?

Code: Alles auswählen

apps
   APF Core und alles andere
backend
    bootstrap datei
frontend
    bootstrap datei
Und durch die Bootstrap Dateien gehe ich dann in meine definierten Maintemplates und mache dann einfach weiter wie gehabt oder?

Gruß
Flo

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

Re: Tutorial für ein Webseite mit 2 Bereichen

Beitrag von dr.e. » 28.08.2011, 23:19:13

Alternativ zu Ralf's Vorschlag kannst du auch mit zwei Domains respektive Sub-Domains arbeiten. Ich persönlich handhabe das mit zwei Domains und einem Code-Zweig. Das hat den Vorteil, dass du das Standard-APF-Url-Layout nutzen kannst und schnell zum Ziel kommst.

Die vorgehensweise ist denkbar einfach: du hast 2 Bootstrap-Dateien, die das jeweils relevante Template bei gleichem Context laden und einen Code-Baum. Beispiel:

Code: Alles auswählen

apps/
       core/
       modules/
       tools/
       extensions/
       my-application/
                             frontend/
                             backend/
                             common/
Bootstrap-Datei Frontend: (example.com)

Code: Alles auswählen

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

import('core::frontcontroller', 'Frontcontroller');
$fC = &Singleton::getInstance('Frontcontroller');
$fC->setContext('foo');
echo $fC->start('my-application::frontend::pres::templates', 'index'); 
Bootstrap-Datei Backend: (backend.example.com)

Code: Alles auswählen

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

import('core::frontcontroller', 'Frontcontroller');
$fC = &Singleton::getInstance('Frontcontroller');
$fC->setContext('foo');
echo $fC->start('my-application::backend::pres::templates', 'index'); 
Ich hoffe, das hilft dir.
Viele Grüße,
Christian

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast