안녕하세요. 사용자가 프런트 엔드에서 비밀번호를 업데이트 할 수 있도록 노력하고 있습니다. 이 필드를 제외한 나머지 필드는 모두 업데이트됩니다. Silverstripe 버전 3.4.0입니다. 이것은 아마이 문제를 처리하는 가장 좋은 방법이 아니다,하지만 난 너무 다른 좋은 CMS처럼실버 스트라이프 : ConfirmedPasswordField에 새 비밀번호가 저장되지 않습니다.
// Edit & Save your details
public function EditMyDetails() {
//Include JS for updating details
Requirements::javascript('module-memberprofiles/javascript/MemberProfileUpdate.js');
Requirements::set_force_js_to_bottom(true);
$fields = new FieldList(
$leftCol = CompositeField::create(
TextField::create('FirstName', 'First Name')
->setFieldHolderTemplate('UserDetails_FieldHolder'),
TextField::create('Surname', 'Surname')
->setFieldHolderTemplate('UserDetails_FieldHolder'),
CompositeField::create(
TextField::create('Address', ''),
TextField::create('Suburb', ''),
CompositeField::create(
DropdownField::create('State', '', singleton('Member')->dbObject('State')->enumValues())->setFieldHolderTemplate('UserDetails_StatePostCode'),
TextField::create('PostCode', '')->setFieldHolderTemplate('UserDetails_StatePostCode')
)->addExtraClass('row')
)
->addExtraClass('userdetails-address wrap')
->setFieldHolderTemplate('UserDetails_AddressHolder'),
TextField::create('Phone', 'Phone')
->setFieldHolderTemplate('UserDetails_FieldHolder'),
TextField::create('Email', 'Email')
->setFieldHolderTemplate('UserDetails_FieldHolder')
)->setFieldHolderTemplate('UserDetails_CompositeField'),
$rightCol = CompositeField::create(
ConfirmedPasswordField::create('Password', 'Change Password', null, null, $showOnClick = true)
)->setFieldHolderTemplate('UserDetails_CompositeField')
);
$actions = new FieldList(new FormAction('SaveMyDetails', 'Save Profile'));
$validation = new RequiredFields(array('FirstName','Surname','Email'));
$form = new Form ($this, 'EditUserDetails', $fields, $actions, $validation);
$form->loadDataFrom(Member::currentUser());
$form->setTemplate('MemberProfilePage_UserDetailsForm');
return $form;
}
public function SaveMyDetails($data, $form) {
$table = Member::currentUser();
$members = Member::get();
$emailExists = $members->filter(array(
'Email' => $data['Email'],
'ID:not' => $table->ID
));
if($emailExists->count() > 0) {
$form->sessionMessage('Sorry, that email address already exists. Please try again','bad');
return $this->redirectBack();
} else {
$form->sessionMessage('Your details have been updated.','good');
}
$form->saveInto($table);
$table->write();
$this->redirectBack();
return $this;
}
성공 메시지가 표시되지만 비밀번호가 저장되지 않습니까? 회원은 어떤 비밀번호를 얻습니까? 없음? – bummzack
@bummzack 안녕하세요, 비밀번호는 원래대로 유지됩니다. – Dallby