Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

...

Ein Controller ist eine Methode in einer Controller-Klasse.

Beispiel
Codeblock
theme
languagephpRDark
titleBeispiel
linenumberstrue
namespace brandbox\component\example {

  use brandbox\component\http;

  class engineclass Engine extends pluginController\lib\engineAbstractControllerEngineAbstract {

    /**
     * @param int $max
     * @return array
     */
    public function index($max) {
        return $this
            ->staticAppController(ui\lib\request\index::class)
            ->request($max)
        ;
    }

    /**
     * @param int $max
     * @return http\respondAbstract
     */
    public function save($max) {
        return $this
            ->staticAppController(ui\lib\execute\save::class)
            ->execute($max)
        ;
    }
 
} }

Der Controller ist die index() Methode, die in der Controller-Klasse brandbox\component\example\engine lebt.

Dieser Controller ist ziemlich einfach:

  • Zeile 1: Brandbox nutzt die Namespace-Funktionalität von PHP, um die gesamte Controller-Klasse mit einem Namespace auszustatten.

  • Zeile 3: Brandbox nutzt wieder die PHP-Namespace-Funktionalität: Das use-Schlüsselwort importiert die Response-Klasse, die der Controller zurückgeben muss.

  • Zeile 5: Die Klasse heißt immer engine.

  • Zeile 11: Die Methode darf ein $max Argument haben, da im DocBlock ein Parameter vom Typ int beschrieben wurde.

  • Zeile 12: Der Controller erzeugt ein 

    respond\*

     Objekt.

Die Basis-Controller-Klasse (engine.php) soll ausschließlich Referenzen auf Kind-Controller-Klassen enthalten. Diese Vorgehensweise dient der Übersichtlichkeit und sorgt für eine strukturierte Gruppierung von Features. Die Kind-Contoller enthalten die Geschäftslogik und verknüpfen zu den abhängigen Plugins.

...

Es gibt unterschiedliche Möglichkeiten auf fremde Plugins und dessen Controller zuzugreifen. 

Statischer Zugriff
RDark
Codeblock
languagephp
themeRDark
titleStatischer Zugriff
collapsetrue
public function abc() { 
  $this->staticAppController(foreign\engine::class)->something();
}
Codeblock
languagephp
theme
title


Zugriff mit neuer Controller-Instanz
collapse
Codeblock
languagetruephp
public function abc() { 
  $this->newAppController(foreign\engine::class)->something();
}
Codeblock
languagephp
themeRDark
title


Zugriff auf erstes Feature über Hook-System
collapsetitle
Codeblock
languagetruephp
public function abc() { 
  $result = $this
    ->main(foreign\engine::class)
    ->first()
    ->sendResponse()
    ->validateCsrf()
    ->validateRights()
    ->getResult($params, [])
  ;
}
Codeblock
languagephp
themeRDark


Zugriff auf alle Features über Hook-System
Codeblock
collapselanguagetruephp
public function abc() { 
  $result = $this
    ->main(foreign\engine::class)
    ->collectAll()
    ->sendResponse()
    ->validateCsrf()
    ->validateRights()
    ->getResult($params, [])
  ;
}


Erstellen eines Hooks
Codeblock
languagephp
themeRDark
titleErstellen eines Hooks
collapsetrue
public function abc() { 
  $result = $this
    ->makeHookable(foreign\engine::class)
    ->something()
  ;
}

...

Es kann notwendig werden werden, Views in Ordnern zu gruppieren, die nicht mit den Controllern korrespondieren. In diesem Fall ergänzen Sie beim Controller in der Basis-Controller-Klasse die Annotation @filename und referenzieren den Pfad zum View. Der Ordner views/ sowie das Suffix .hbs werden dabei nicht angegeben.

Codeblock
languagephpthemeRDark
/**
  * @filename entrypoints/index
  */
public function index($max) {}


Codeblock
languagexmlthemeRDark
<div>
  {{max}}
</div>

Rollen & Rechte

Lesen Sie bei Rollen & Rechte weiter.

Verwalten der Session

Brandbox stellt einen Session-Service bereit, mit dem Sie Informationen über den Benutzer zwischen den Requests speichern können. Bitte beachten Sie, dass Anwender-Informationen nicht direkt über die Session bezogen werden dürfen. Dafür verwenden Sie bitte die Application-Methoden, die eingangs beschrieben wurden.

Nachricht in View verarbeiten
Codeblock
languagephp
themeRDark
titleNachricht in View verarbeiten
$sessionRequest= session\request::get();
$sessionRequest->setValue('foo', $foo);

$foo = $sessionRequest->getString('foo');

...