public function create(callable $onSuccess)
{
$form = $this->factory->create();
$form->addText('username', 'Pick a username:')->setRequired('Please pick a username.');
$form->addEmail('email', 'Your e-mail:')->setRequired('Please enter your e-mail.');
$form->addPassword('password', 'Create a password:')->setOption('description', sprintf('at least %d characters', self::PASSWORD_MIN_LENGTH))->setRequired('Please create a password.')->addRule($form::MIN_LENGTH, NULL, self::PASSWORD_MIN_LENGTH);
$form->addSubmit('send', 'Sign up');
$form->onSuccess[] = function (Form $form, $values) use($onSuccess) {
try {
$this->userManager->add($values->username, $values->email, $values->password);
} catch (Model\DuplicateNameException $e) {
$form['username']->addError('Username is already taken.');
return;
}
$onSuccess();
};
return $form;
}