XmlParser
class XmlParser extends Parser
Der Parser lädt eine Route aus einer XML-Datei mit der Endung .xml. Der Aufbau der XML-Datei ist im folgenden beschrieben.
Default-Route
Über das Attribute default kann eine Route als Default definiert werden. Diese Route wird unabhängig vom Match ausgeführt, wenn keine andere Route passt. Werden mehrere Routen mit default ausgezeichnet ist das Ergebnis unbestimmt.
Wichtig: Bei einer Default-Route kann es bei falsch konfiguriertem Webserver zu einer Schleife kommen.
Gruppen
Jede Route in einer Gruppe bekommen eine Referenz auf die anderen Routen in der Gruppe. Diese Referenz definieren welche Methoden auf einen Entpunkt möglich sind. Außerdem könnenn auf Gruppenebene allgemeine Konfigurationen die für Routen übernommen werden sollen definiert werden.
Parameter
Die Parameter werden dem Presenter zur Verfügung gestellt.
Konfiguration
Erweiterte Konfigurationen können über den configuration-Tag an den entsprechenden Presenter weitergegeben werden.
Beispielkonfiguration
<definition>
<routes>
<group>
<pattern><![CDATA[^/account$]]></pattern>
<template>/account</template>
<!-- Geschützte Account-Seite -->
<route id="ACCOUNT">
<method>GET</method>
<presenter>\Alvine\Application\Web\Presenter\Page</presenter>
<configuration>
<view>
<!-- Falls kein resourcepath angegeben wurde, liegt das Template unter
application\resource\template\alvine\application\web\presenter\page\default.min.html
Der gesamte Pfad wird durchsucht, so wird falls unter dem Ursprungspfad kein
Template zu finden ist der Reihe nach die Pfade
application\resource\template\alvine\application\web\view\default.min.html
application\resource\template\alvine\application\web\default.min.html
application\resource\template\alvine\application\default.min.html
application\resource\template\alvine\default.min.html
application\resource\template\default.min.html
usw bis zum Root-Verzeichnis durchsucht.
-->
<template>default.min</template>
<!-- Der Pfad zu den Templates kann
auch auch alternativ über das Argument
resourcepath angegeben werden
<template resourcepath="/var/resource/template/">default.min</template>
-->
</view>
<!-- Verlinkungen -->
<links>
<!-- URL einer Verlinkung -->
<link route="NEXT-ROUTE-ID" relation="info" label="i18n{info}"/>
</links>
<!-- Berechtigung die Seite anzuschauen -->
<accesscontrol>
<permission name="viewthis" class="\Alvine\Application\Web\Route\Permission">
<entity class="\Alvine\Security\Authentication\User">hans.mustermann</entity>
<entity class="\Alvine\Security\Authentication\Group">administrator</entity>
<entity class="\Alvine\Security\Authorization\Role">admin</entity>
</permission>
</accesscontrol>
<!-- Bearbeiten von Ausnahmeregeln -->
<exceptions>
<exceptions></exceptions>
</exceptions>
<containers>
<!-- Der Titel ist eine Locale -->
<container placeholder="title">
<content>i18n{account.title}</content>
</container>
<!-- Der Header wird statisch eingebunden -->
<container placeholder="header">
<content><![CDATA[<div class="row"><div class="col-md-12 col-lg-12 col-sm-12 col-xs-12"><div class="page-header"><img src="http://alvine.io/alvine.png" style="width:120px" class="img-responsive"></div></div></div>]]></content>
</container>
<!-- Die Navigation wird über ein Plugin integriert -->
<container placeholder="navigation">
<plugin class="\Alvine\Application\Web\Presenter\Page\Plugin\Navigation\Tree">
<navigation include="navigation/main.properties">
<!-- Der Inhalt aus der Datei main.properties
wird um diese Definition ergänzt.
Achtung: Die Definitionen dürfen nicht
den gleichen Key enthalten -->
extra.1.url=http://alvine.io
extra.1.label=alvine.io
</navigation>
</plugin>
</container>
<container placeholder="headline">
<content></content>
</container>
<container placeholder="content">
<content><![CDATA[Interner Bereich!]]></content>
</container>
<!-- Die Fußzeile ist wieder statisch -->
<container placeholder="footer">
<content><![CDATA[<hr>© 1999 schukai GmbH]]></content>
</container>
</containers>
<!-- Umschreiben von Inhalten auf der Seite -->
<rewrite>
<rule>
<!-- Es finden die Regeln von \preg_replace Anwendung -->
<pattern><![CDATA[(©) 1999]]></pattern>
<target>${1} 2015</target>
</rule>
</rewrite>
</configuration>
</route>
</group>
</routes>
</definition>
Constants
SUBDIR |
|
XPATH |
|
Properties
protected File | $file | from Parser | |
protected Directory | $parsedRouteDirectory | from Parser | |
protected Collection | $router | from Parser |
Methods
Standardpfad in dem die erstellten Routen abgelegt werden.
Route erstellen
ObjectMap erstellen
XML-Parsen
Zugangsberechtigung konfigurieren
No description
Parameterdefinition auslesen
Links aus der Route auslesen
Konfiguration auslesen
Details
in Parser at line 73
protected
__construct(Collection $router, File $file)
RouteParser erstellen
Anhand der Dateierweiterung wird ein Router bestimmt und die übergebene Datei geparsed.
in Parser at line 89
static Directory
getParsedRoutePath()
Standardpfad in dem die erstellten Routen abgelegt werden.
in Parser at line 97
$this
clear()
at line 232
Router
update()
Routingtabelle einlesen
Diese Methode liesst eine Routingtabelle aus einer XML-Datei ein.
in Parser at line 128
static Parser
getParser(Collection $router, File $file)
Parser bestimmen
An der Dateierweiterung wird die Parser-Klasse bestimmt. Die Route test.xml wird durch den XmlParser verarbeitet.
in Parser at line 158
static protected Route
createRoute(string $method, string $pattern, string $presenter, string $id, string $class = null)
Route erstellen
in Parser at line 180
protected File
writeParsedStructure(string $source, string $extension = null)
at line 193
static ObjectMap
getParamterMap(NodeList $parameterNodes)
ObjectMap erstellen
Diese Methode erstellt eine ObjectMap von Parameter Objekten
<parameters>
<parameter type="integer" name="name">myName</parameter>
<parameter type="string" name="format">jpg</parameter>
</parameters>
at line 265
protected array
getRouteFromXML(FileInputStream $file)
XML-Parsen
at line 351
protected XmlParser
initExceptionHandling(Route $routeObject, Element $route)
Exceptions initialisieren
at line 423
protected DefaultAccessControlList|null
getRouteAccessControlList(Route $routeObject, Element $route, Map|null $globals = null)
Zugangsberechtigung konfigurieren
at line 463
protected XmlParser
buildRouteAccessControlList(DefaultAccessControlList $accessList, NodeList $permissionNodes)
at line 540
protected ParameterMap
getRouteParameterMap(Route $routeObject, Element $route, Map|null $globals = null)
Parameterdefinition auslesen
Es werden zuerst die Globalen (in der Gruppe gesetzten Parameter ausgelesen und gesetzt. Danach werden die Routenparameter gesetzt.
at line 582
protected NodeList
getRouteLinks(Route $routeObject, Element $route, Map|null $globals = null)
Links aus der Route auslesen
at line 612
protected NodeList
getRouteConfiguration(Route $routeObject, Element $route, Map|null $globals = null)
Konfiguration auslesen