Symfony - зарегистрировать систему - подтвердить пароль и скрытый ввод - PullRequest
2 голосов
/ 25 июня 2011

Я использую Доктрину:

User:
  columns:
    username:        { type: string(255), unique: true }
    password:        { type: string(255) }
    ip:              { type: string(255) }

Это породило у меня новую форму:

username: 
password:
ip:

Как мне подтвердить пароль и получить IP-адрес при скрытом вводе?

Я буду:

username:
password:
confirm password:

и в базе данных mysql будут имя пользователя, пароль и IP ($ _SERVER ['REMOTE_ADDR'];) Как это сделать в Symfony 1.4?

THX!

@@@@@@@

добавлено:

я делаю:

  $user = $this->form->getObject();
  $user->setPassword(sha1($user->getPassword()));
  $user->setIp($_SERVER['REMOTE_ADDR']);
  $user = $form->save();

setPassword не работает, но setIp хорошо работает.

1 Ответ

2 голосов
/ 25 июня 2011

Вы можете удалить поля, установив в методе configure () формы:

unset($form['ip'])

И добавить поле подтверждения пароля с помощью:

    $this->widgetSchema['password']     = new sfWidgetFormInputPassword();
    $this->widgetSchema['password2']    = new sfWidgetFormInputPassword();
    // Don't print passwords when complaining about inadequate length
    $this->setValidator( 'password', new sfValidatorString(array(
        'required' => true,
        'trim' => true,
        'min_length' => 6,
        'max_length' => 128
        ));
    $this->validatorSchema['password2'] = clone $this->validatorSchema['password'];        

    $this->mergePostValidator(new sfValidatorSchemaCompare(
        'password', sfValidatorSchemaCompare::EQUAL, 'password2',
        array())
    ));

Вы можете добавить IPв вашем actions.class.php:

if ($request->isMethod('post')) {
  $this->form->bind($request->getParameter('yourformprefix'));
  if ($this->form->isValid()) {
    $user = $this->form->getObject();
    $user->setIp($_SERVER['REMOTE_ADDR']);
    $user->save();
  }
}

Небольшое примечание: я настоятельно рекомендую использовать существующие плагины (doAuth / sfDoctrineGuardPlugin), если вы планируете выполнять такую ​​работу.

...