Controller
Controller legen wir im Ordner src/controller ab. Als Konvention müssem Controller-Namen auf Controller.php enden und darin enthaltene Action-Funktionen müssen auf Action enden. Für unser Beispiel legen wir die Datei src/controller/indexController.php an:
<?php
namespace src\controller;
class indexController extends \hubert\generic\controller {
public function indexAction($params){
return $this->responseTemplate("index/index", ["name" => "Hubert"]);
}
public function apiAction(){
$data = ["users" => ["Falk", "Ronny"]];
return $this->responseJson($data);
}
public function redirectAction(){
$home_route = hubert()->router->get("home");
return $this->responseRedirect($home_route);
}
}
Controller erben Eigenschaften von \hubert\generic\controller oder du implementierst selbstständig das Interface hubert\interfaces\controller. Über $this->getResponse() steht das Response-Objekt und über $this->getRequest() steht das Request-Objekt zur Verfügung. Controller müssen ein Response Objekt zurückgeben. Um dieses mit Daten zu befüllen stehen drei Funktionen zur Verfügung:
- $this->responseJson($data, $status = null, $encodingOptions = 0) Über diese Funktion wird ein Objekt wie zB. ein Array in den Response gesetzt und der Response als Json encodet
- $this->responseRedirect($url, $status = null) In den Response wird eine Url gesetzt und diese wird als Redirect an den Empfänger übergeben
- $this->responseTemplate($template, $data = array()) Es wird ein Template gerendert