Ben mysql db depolanan bir UserProfile düzenlemek için bir form var. Hangi aşağıdaki özel konfigürasyon içerir:
public function configure()
{
$this->widgetSchema['password']=new sfWidgetFormInputPassword();
$this->validatorSchema['password']->setOption('required', false); // you don't need to specify a new password if you are editing a user.
}
When the user tries to save the executeUpdate method is called to commit the changes. If the password is left blank, the password field is set to '', but I want it to retain the old password instead of overwriting it.
Bu ne yapıyor (/ symfony ethos en) yolu iyi? Benim çözüm (i şifre şifreleme için zaten yapmıştı) modeline pasör yöntemini geçersiz ve boş değerleri yok saymak oldu.
public function setPassword( $password )
{
if ($password=='') return false; // if password is blank don't save it.
return $this->_set('password', UserProfile ::encryptPassword( $password ));
}
Bu gibi ince iş gibi görünüyor, ama daha iyi bir yolu var mı?
Eğer merak ediyorsanız ben eski bir veritabanı ile uğraşıyorum olarak bu proje için sfDoctrineGuard kullanamazsınız, ve şema değiştiremezsiniz.