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
title
languagephpBeispiel
namespace brandbox\component\example {

  use brandbox\component\http;

  class engineEngine 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
title
Codeblock
languagephp
titleStatischer Zugriff
collapsetrue
public function abc() { 
  $this->staticAppController(foreign\engine::class)->something();
}
Codeblock
languagephp


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


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


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


Erstellen eines Hooks
Codeblock
languagephp
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
languagephp
themeRDark
/**
  * @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');

...