Benutzerdefinierte API-Aufrufe¶
Sie können das Contentfly CMS jederzeit um benutzerdefinierte Schnittstellen (API-Aufrufe) ergänzen.
Controller anlegen¶
Benutzerdefinierte Controller, die die Logik für die eigene Schnittstelle beinhaltet, sind im Ordner custom/Controller abzulegen und von Areanet\PIM\Classes\Controller\BaseController abzuleiten.
custom/Controller/TestController.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <?php namespace Custom\Controller; use Areanet\PIM\Classes\Controller\BaseController; class TestController extends BaseController { public function testAction(){ $data = array(); return new JSONResponse($data); } public function secureAction(){ $data = array(); return new JSONResponse($data); } public function hallo($name){ $data = array('welcomeMessage', "Hallo $name"); return new JSONResponse($data); } } |
Controller einbinden¶
Route-Manager¶
Der benutzerdefinierte Controller muss noch mit entsprechenden URL-Routen verknüpft werden, um diesen auch von "außen" erreichbar zu machen. Dies wird über den Areanet\PIM\Classes\Manager\RouteManager erreicht, der über $app['routeManager'] angesprochen werden kann.
Über den Befehl mount wird der benutzerdefinierte Controller mit der Basis-Route custom verknüpft und kann über CustomControllerProvider weiter konfiguriert werden.
custom/app.php
1 2 | <?php $controllerProvider = $app['routeManager']->mount('custom', 'Custom\Controller\TestController'); |
mount($baseRoute, $controller)
Parameter | Typ | Optional | Beschreibung |
---|---|---|---|
$baseRoute | String | nein | Name der Basis-Route. Alle weiteren Aufrufe sind dann unter www.domain.de/BASIS_ROUTE/* erreichbar |
$controller | Areanet\PIM\Classes\Controller\BaseController | nein |
- Rückgabe: Areanet\PIM\Classes\Controller\Provider\Base\CustomControllerProvider
Basis-Route
Im obigen Beispiel sind alle im Controller aufgerufenen Aktionen über die Basis-URL www.domain.de/custom erreichbar.
Beachten Sie, dass alle aufrufbaren Aktionen im Controller aber über die folgenden Schritten noch manuell konfiguriert werden müssen!
Die Basis-Route $baseRoute muss eindeutig sein!
Controller-Provider¶
Über den Controller-Provider können die einzelnen URL-Routen zu den Aktionen im Controller konfiguriert werden.
get($route, $isSecure = false, $action_name = null)
Hinzufügen einer URL-Route über HTTP-GET.
Parameter | Typ | Optional | Beschreibung |
---|---|---|---|
$route | String | nein | URL-Route 'routename' wird automatisch auf die Methode 'routenameAction' im Contoller gemappt, wenn keine dritter Parameter action_name angegeben ist. |
$isSecure | Boolean | ja | |
$action_name | String | ja | anstatt automatischem Mapping wird die URL-Route auf die hier angegebene Methode im Controller gemappt. |
- Rückgabe/Fluent Interface: Areanet\PIM\Classes\Controller\Provider\Base\CustomControllerProvider
1 2 3 4 | <?php $controllerProvider->get('secure', true); // Ohne weitere Parameter wird automatisch die Methode _secureAction_ // in Ihrem benutzerdefinierten Controller aufgerufen. |
post($route, $isSecure = false, $action_name = null)
Hinzufügen einer URL-Route über HTTP-POST.
Parameter | Typ | Optional | Beschreibung |
---|---|---|---|
$route | String | nein | URL-Route 'routename' wird automatisch auf die Methode 'routenameAction' im Contoller gemappt, wenn keine dritter Parameter action_name angegeben ist. |
$isSecure | Boolean | ja | |
$action_name | String | ja | anstatt automatischem Mapping wird die URL-Route auf die hier angegebene Methode im Controller gemappt. |
- Rückgabe/Fluent Interface: Areanet\PIM\Classes\Controller\Provider\Base\CustomControllerProvider
1 2 | <?php $controllerProvider->post('test', true); |
match($route, $isSecure = false, $action_name = null)
Hinzufügen einer URL-Route über HTTP-POST und HTTP-GET.
Parameter | Typ | Optional | Beschreibung |
---|---|---|---|
$route | String | nein | URL-Route 'routename' wird automatisch auf die Methode 'routenameAction' im Contoller gemappt, wenn keine dritter Parameter action_name angegeben ist. |
$isSecure | Boolean | ja | |
$action_name | String | ja | anstatt automatischem Mapping wird die URL-Route auf die hier angegebene Methode im Controller gemappt. |
- Rückgabe/Fluent Interface: Areanet\PIM\Classes\Controller\Provider\Base\CustomControllerProvider
1 2 | <?php $controllerProvider->match('test', true); |
Beispiele¶
custom/app.php
1 2 3 4 5 | <?php $app['routeManager']->mount('custom', 'Custom\Controller\TestController') ->get('secure', true) ->get('test', false) ->get('hallo/{name}', false, 'hallo'); |
Die benutzerdefinierte Schnittstellen sind damit wie folgt zu erreichen:
- www.domain.de/custom/secure mit gesetztem APPCMS-TOKEN Header-Token
- www.domain.de/custom/test
- www.domain.de/hallo/peter
Silex URL-Routing
Weitere Informationen zum Routing unter Silex URL-Routing
Zugriff auf Systemfunktionen¶
Innerhalb Ihrer benutzerdefinierten Controller können Sie über Dependency Injection auf verschiedene Systemkomponenten und -funktionen zugreifen.
Silex-Application¶
1 2 3 4 5 | <?php function controllerAction(){ $app = $this->app; // Silex\Application } |
Doctrine-ORM¶
1 2 3 4 5 6 7 8 | <?php function controllerAction(){ $em = $this->app['orm.em']; // Doctrine\ORM\EntityManager $categories = $em->getRepository('Custom\Entity\Category')->findBy(array('isDeleted' => false), array('sorting'=>'asc')); $questions = $em->getRepository('Custom\Entity\Question')->findBy(array('isDeleted' => false), array('sorting'=>'asc')); } |
Doctrine-DBAL¶
1 2 3 4 5 | <?php function controllerAction(){ $dbal = $this->app['database']; // Doctrine\DBAL\Connection } |
Eingeloggter Benutzer¶
1 2 3 4 5 | <?php function controllerAction(){ $user = $this->app['auth.user']; // Doctrine\ORM\EntityManager } |
Hilfsfunktionen¶
1 2 3 4 5 | <?php function controllerAction(){ $helper = $this->app['helper']; // Areanet\PIM\Classes\Helper } |
Die Helper-Klasse stellt derzeit lediglich eine Methode zur Verfügung.
getFullEntityName($shortName)
Gibt aus der Kurzschreibweise (z.B. Produkt oder PIM\User) den kompletten Pfad zurück (z.B. Custom\Entity\Produkt oder Areanet\PIM\Entity\User)
Parameter | Typ | Optional | Beschreibung |
---|---|---|---|
$shortName | String | nein | Kurzschreibweise des Entitäten-Namen. |
- Rückgabe: String