/** * Default controller command * Shows and handles registration form */ public function index() { if ($this->auth->isAuthorized()) { $this->redirect('/profile/'); } $form = new Form(); // Login field $loginField = new InputField('login', 'Login'); $loginField->addValidator(new RequiredValidator())->addValidator(new MinLengthValidator(3))->addValidator(new MaxLengthValidator(20)); // Password field $passwordField = new PasswordField('password', 'Password'); $passwordField->addValidator(new RequiredValidator())->addValidator(new PasswordValidator()); // Repeat password field $repeatPasswordField = new PasswordField('password2', 'Repeat password'); $repeatPasswordField->addValidator(new RequiredValidator())->addValidator(new EqualToValidator($passwordField)); // First name field $firstNameField = new InputField('first_name', 'First name'); $firstNameField->addValidator(new RequiredValidator()); // Last name field $lastNameField = new InputField('last_name', 'Last name'); $lastNameField->addValidator(new RequiredValidator()); // E-mail field $emailField = new EmailField('email', 'E-mail'); $emailField->addValidator(new EmailValidator()); // Phone field $phoneField = new PhoneField('phone', 'Phone'); $phoneField->addValidator(new MaxLengthValidator(20)); // Birth date field $birthDateField = new DateField('birth_date', 'Birth date'); $birthDateField->addValidator(new DateValidator()); $form->addField($loginField)->addField($passwordField)->addField($repeatPasswordField)->addField($firstNameField)->addField($lastNameField)->addField($emailField)->addField($phoneField)->addField($birthDateField)->addField(new SubmitField('Register')); if (!empty($_POST)) { $form->populate($_POST); if ($form->validate()->isValid()) { try { (new ProfileModel())->create($_POST); $this->redirect('/registration/ok/'); } catch (ModelException $e) { $form->getField('login')->setError($e->getMessage()); } catch (DatabaseException $e) { (new ErrorsController())->error503(); } } } $formString = $form->render(); Renderer::getInstance()->render('registration', ['form' => $formString]); }
/** * Default controller command * Shows and handles user's profile form */ public function index() { $this->auth->isAuthorized() ? $userId = $this->auth->getUserId() : $this->goHome(); $form = new Form(); // First name field $firstNameField = new InputField('first_name', 'First name'); $firstNameField->addValidator(new RequiredValidator()); // Last name field $lastNameField = new InputField('last_name', 'Last name'); $lastNameField->addValidator(new RequiredValidator()); // E-mail field $emailField = new EmailField('email', 'E-mail'); $emailField->addValidator(new EmailValidator()); // Phone field $phoneField = new PhoneField('phone', 'Phone'); $phoneField->addValidator(new MaxLengthValidator(20)); // Birth date field $birthDateField = new DateField('birth_date', 'Birth date'); $birthDateField->addValidator(new DateValidator()); $form->addField($firstNameField)->addField($lastNameField)->addField($emailField)->addField($phoneField)->addField($birthDateField)->addField(new SubmitField('Save')); try { if (!empty($_POST)) { $form->populate($_POST); if ($form->validate()->isValid()) { $values = array_merge($_POST, ['id' => $userId]); $this->profileModel->update($values); $this->redirect('/profile/'); } } else { $user = $this->profileModel->get($userId); if (is_null($user)) { $this->logout(); } $fields = ['first_name' => $user->firstName, 'last_name' => $user->lastName, 'email' => $user->email, 'phone' => $user->phone, 'birth_date' => $user->birthDate]; $this->profileModel->convertDates($fields, ['birth_date']); $form->populate($fields); } $formString = $form->render(); Renderer::getInstance()->render('profile', ['form' => $formString]); } catch (DatabaseException $e) { (new ErrorsController())->error503(); } }