Warum arbeitest Du nicht direkt mit den $_POST-Parametern?
Das mehrmalige Umkopieren von Parametern ist kontraproduktiv.<p><input type="password" name="password[a]"></p> <p><input type="password" name="password[b]"></p>
Ich hole mir die Daten über eine Request-Klasse, die mir die Eingaben gleich filtert:
public function getQuery(string $FormFieldName)
{
try {
if ($FormFieldName !== NULL){
$query = filter_input(INPUT_POST, $FormFieldName, FILTER_SANITIZE_STRIPPED);
return $this->query = $query;
} else {
throw new Exception($query_exception);
}
} catch (Exception $query_exception){
Logger::newMessage($query_exception);
Logger::customErrorMsg($query_exception);
}
}
Im Controller speichere ich dann die Daten in einer Variablen, bzw. im Array $userData, da ich dieses später noch in der View benötige, um die Benutzereingaben nach einer Fehlermeldung als Formwerte zu erhalten.
$userData['username'] = $this->request->getQuery('username');
$userData['email'] = $this->request->getQuery('email');
$userData['password'] = $this->request->getQuery('password');
$userData['firstname'] = $this->request->getQuery('firstname');
$userData['lastname'] = $this->request->getQuery('lastname');
Ich habe den Code nochmals angepasst und folgendes ist dabei herausgekommen:
if(isset($userData['password']['a'],$userData['password']['b'])) {
if($userData['password']['a'] === $userData['password']['b']){
$passwordHashed = $this->passwordEncoder->hash($userData['password']['a']);
$newUser->setPassword($passwordHashed);
} else {
$this->flash->add('Die Passwörter stimmen nicht überein!','danger');
break;
}
} else {
$this->flash->add('Es muss ein Passwort angegeben werden!','danger');
break;
}
Beste Grüße
vapita