Проблема с sfValidatorDoctrineChoice - PullRequest
0 голосов
/ 31 августа 2011

Код:

$query = Doctrine_Core::getTable('Users')->createQuery('u')
        ->select('u.email')
        ->where('u.username = ?', $this->getRequest()->getCookie('vL_username'))
        ->andWhere('u.password = ?', md5($editprofile['password']));
$this->form->setValidators(array(
    'password' => new sfValidatorDoctrineChoice(array(
                'model'=>'Users',
                'column'=>'password',
                'query'=>$query,
                ), array(
                'invalid' => 'The password is wrong.',
                'required' => 'Required',
                )
    ),
));

Но это не работает.Он автоматически добавляет AND WHERE password = 'whatever the inputed value is (unencrypted)'

Идея состоит в том, что мне нужно зашифровать с использованием md5 входное значение перед проверкой по записи в БД.Если я удаляю 'column'=>'password', и оставляю только $query, автоматически добавляется введенное значение как id !(Который является первичным ключом таблицы).

В моем случае мне не нужен sfValidatorDoctrineChoice, чтобы написать запрос, а просто использовать мой, чтобы проверить, существует ли запись с заданными параметрами.Как я могу это сделать?

1 Ответ

0 голосов
/ 01 сентября 2011

Решение, которое я нашел и работает:

$editprofile=$request->getParameter('editprofile');
$editprofile['password']=md5($editprofile['password']);
$request->setParameter('editprofile', $editprofile);

Может быть, есть и лучшее.

...