Silverstripe:会员资料 - 在前端更新详细信息
Silverstripe: Member Profile - Update details on Frontend
我试图让用户从前端 'dashboard' 类型的页面更新他们的详细信息。我已经显示了表单,但是当我单击 'Update details' 时,表单重定向到一个空白页面,并且字段没有改变。有人能给我指出正确的方向吗?
<?php
class MemberProfile extends Page {
private static $description = 'Page that displays the current user\'s profile';
function getCMSFields() {
$fields = parent::getCMSFields();
// we don't want the Content editor for this page type
$fields->removeFieldFromTab('Root.Main', 'Content');
return $fields;
}
}
class MemberProfile_Controller extends Page_Controller {
private static $allowed_actions = array(
'UpdateDetails'
);
public function UpdateDetails() {
$form = Form::create(
$this,
__FUNCTION__,
FieldList::create(
TextField::create('FirstName','First name:')
->setAttribute('value', Member::CurrentUser()->FirstName),
TextField::create('Surname','Last name:')
->setAttribute('value', Member::CurrentUser()->Surname)
),
FieldList::create(
FormAction::create('saveDetails','Update details')
)
);
return $form;
}
public function saveDetails($data,$form) {
$CurrentMember = Member::CurrentMember();
$CurrentMember->FirstName = $data['FirstName'];
$CurrentMember->Surname = $data['Surname'];
$form->saveInto($CurrentMember);
$CurrentMember->write();
return $this->redirectBack();
}
}
我的回答是 dev/build 需要包含静态允许的操作...这通常对我来说就是这样。
但是我的主要答案是使用这个模块来管理用户配置文件,它允许进行许多自定义并会为您节省很多时间....
https://github.com/silverstripe-australia/silverstripe-memberprofiles
"A new page type is added in the CMS called a "会员个人资料页面”。这允许您创建一个允许用户注册的页面 and/or 管理他们的个人资料。可以在 "Behaviour" 选项卡中启用或禁用注册."
我试图让用户从前端 'dashboard' 类型的页面更新他们的详细信息。我已经显示了表单,但是当我单击 'Update details' 时,表单重定向到一个空白页面,并且字段没有改变。有人能给我指出正确的方向吗?
<?php
class MemberProfile extends Page {
private static $description = 'Page that displays the current user\'s profile';
function getCMSFields() {
$fields = parent::getCMSFields();
// we don't want the Content editor for this page type
$fields->removeFieldFromTab('Root.Main', 'Content');
return $fields;
}
}
class MemberProfile_Controller extends Page_Controller {
private static $allowed_actions = array(
'UpdateDetails'
);
public function UpdateDetails() {
$form = Form::create(
$this,
__FUNCTION__,
FieldList::create(
TextField::create('FirstName','First name:')
->setAttribute('value', Member::CurrentUser()->FirstName),
TextField::create('Surname','Last name:')
->setAttribute('value', Member::CurrentUser()->Surname)
),
FieldList::create(
FormAction::create('saveDetails','Update details')
)
);
return $form;
}
public function saveDetails($data,$form) {
$CurrentMember = Member::CurrentMember();
$CurrentMember->FirstName = $data['FirstName'];
$CurrentMember->Surname = $data['Surname'];
$form->saveInto($CurrentMember);
$CurrentMember->write();
return $this->redirectBack();
}
}
我的回答是 dev/build 需要包含静态允许的操作...这通常对我来说就是这样。
但是我的主要答案是使用这个模块来管理用户配置文件,它允许进行许多自定义并会为您节省很多时间....
https://github.com/silverstripe-australia/silverstripe-memberprofiles
"A new page type is added in the CMS called a "会员个人资料页面”。这允许您创建一个允许用户注册的页面 and/or 管理他们的个人资料。可以在 "Behaviour" 选项卡中启用或禁用注册."