Ich habe seit Stunden getestet und getan. Ich glaube, den Ursprung des Fehlers entdeckt zu haben. Zumindest weiß ich jetzt, dass der Fehler darin liegt, dass ich nicht weiß, wie die View mit dem Controller kommunizieren soll. Meine View wird ja in der Form-Klasse mit include eingefügt.
class Form
Und so lange die Inputfelder nicht korrekt ausgefüllt sind, wird sie ja immer wieder neu eingefügt.
Ich dachte, dass die Registry als globaler Container einen aktuellen Zustand wiedergibt. Das heißt, dass wenn in der View auf ein Objekt im Registry-Container zugegriffen wird, dass es dann automatisch den aktuellen Zustand mit den neuzugewiesenen Variablen wiedergibt. Aber das tut es nicht. Ich weiß also nicht, wo ich den Zustand nach der Validierung zwischenspeichern soll, damit es sich die View holen kann, dass die View also weiß "hey, ich werde zum 2. mal aufgerufen, nach der action gab es Fehler, jetzt diese ausgeben".
Der Knackpunkt scheint die Methode $form->isValid() zu sein. Die Zuweisung der Errors dort am Ende findet aus irgendeinem Grund nicht statt.
class Form
PHP-Code:
public function __construct()
{
$this->validator = Registry::getInstance()->validator;
include $this->form;
}
Ich dachte, dass die Registry als globaler Container einen aktuellen Zustand wiedergibt. Das heißt, dass wenn in der View auf ein Objekt im Registry-Container zugegriffen wird, dass es dann automatisch den aktuellen Zustand mit den neuzugewiesenen Variablen wiedergibt. Aber das tut es nicht. Ich weiß also nicht, wo ich den Zustand nach der Validierung zwischenspeichern soll, damit es sich die View holen kann, dass die View also weiß "hey, ich werde zum 2. mal aufgerufen, nach der action gab es Fehler, jetzt diese ausgeben".
Der Knackpunkt scheint die Methode $form->isValid() zu sein. Die Zuweisung der Errors dort am Ende findet aus irgendeinem Grund nicht statt.
PHP-Code:
public function isValid($request)
{
foreach($request as $key => $value) {
// bei fehlerhafter Eingabe, $this->errors befüllen.
}
if(null !== $this->errors) {
// hier sollte sich Zustand ändern, tut es aber nicht
Registry::getInstance()->validator->setErrors($this->errors);
return false;
}
return true;
}
Kommentar