Hey,
ich bin gerade dabei ein kleines Plugin zu schreiben, was in den saveRegister Prozess eingreift.
Ich habe einen preDispatch, welcher die Eingabe in dem Formular prüft und einen postDispatcher, der die
Shopware eigenen Fehlermeldung ggf. erweitert.
Solange ein Shopware eigener Fehler erzeugt wird, wird auch meine Fehlermeldung ausgegeben.
Wenn aber kein eigener Fehler existiert, so wird meine Meldung einfach übersprungen und der Benutzer angelegt.
Ich denke, dass ich nur ein forward einbauen muss. Leider weiss ich nicht welche/n action / controller ich ansprechen muss.
public function onFrontendPreDispatch(Enlight_Event_EventArgs $args)
{
$config = $this->Config();
$controller = $args->get('subject');
$view = $controller->View();
if($controller->Request()->isPost()) {
$birthday = $controller->Request()->getPost('register')['personal']['birthday'];
if($this->validateAge($birthday['day'].".".$birthday['month'].".".$birthday['year'], $config->get('minAge')) != 1) {
$errors['personal']['birthdate'] = "Du musst mindestens 18 Jahre als sein, um bestellen zu können!";
$view->assign('error_birthdate', $errors);
//$controller->forward('index', 'account');
}
}
}
public function onFrontendPostDispatch(Enlight_Event_EventArgs $args)
{
$controller = $args->get('subject');
$view = $controller->View();
if($view->getAssign('error_birthdate')) {
$errors = $view->getAssign('errors');
$new_errors = array_merge_recursive($errors, $view->getAssign('error_birthdate'));
$view->assign('errors', $new_errors);
}
}
Jetzt gibt es noch eine Kleinigkeit: Es gibt ja checkout/confirm und account als url. Spreche ich damit automatisch beide an?
Bzw wohin muss der forwarder zeigen?