public function register() { $token = $this->helper->createToken(); $logged = $this->loginHelper->isLoggedIn(); $registerStudentForm = new RegisterStudentForm(); if ($logged) { $registerStudentForm->setStudent($logged); } $errors = new ErrorList(); if ($_SERVER['REQUEST_METHOD'] == 'POST') { $registerStudentForm->fillDataFromArray($_POST); $errors = $this->validations->validRegisterStudentForm($registerStudentForm, $logged); // $logged - $editMode if (!$errors->hasErrors()) { if ($this->helper->validToken($registerStudentForm->getToken())) { if ($logged) { $this->studentGateway->updateStudent($registerStudentForm->getStudent()); if ($registerStudentForm->getPassword != "") { $this->loginHelper->createCookies($registerStudentForm->getStudent()); } $this->redirect('/public/index.php?notify=Success'); } else { $this->studentGateway->addStudent($registerStudentForm->getStudent()); $this->loginAction->login(); $this->redirect($this->getQuery('go')); } } else { throw new \Exception("Invalid token"); } } } $this->render('templates/registration.phtml', compact('registerStudentForm', 'errors', 'token', 'logged')); }
public function validRegisterStudentForm(RegisterStudentForm $registerStudentForm, $editMode = false) { $errors = $this->studentValidations->validStudent($registerStudentForm->getStudent()); foreach ($this->validations as $field => $validator) { $parameters = array(); foreach ($validator['parameters'] as $parameter) { $parameters[] = call_user_func([$registerStudentForm, $parameter]); } //Если включен режим редактирования, то к валидации пароля добавляем параметр сообщающий об этом. if ($field = 'password' and $editMode) { $parameters[] = true; } $errors->setError($field, call_user_func_array([$this, $validator['validator']], $parameters)); } return $errors; }