2
私はユーザーがフロントエンドの「ダッシュボード」タイプのページから詳細を更新できるようにしようとしています。フォームを表示していますが、[詳細を更新]をクリックすると、フォームは空白のページにリダイレクトされ、フィールドは変更されません。誰かが私を正しい方向に向けることができますか?Silverstripe:メンバープロフィール - フロントエンドの詳細を更新
<?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();
}
}
ありがとうございます。プロファイルページのコンテンツ設定で、他のフィールドを 'グリッドフィールド'に追加できますか?私は電話番号とアドレスをフロントエンドに表示しておきたいと思います。 @Barry – Dallby
これらはすべて、上記のモジュールを使用する際にGUIを使用して設定できます。ありがとう。 – Barry
私はこの反応を見る前に実際にそれを理解しました。 ... CMS管理者の[メンバープロファイル]ページ設定の[プロファイル]タブをクリックします。余分なフィールドをメンバープロファイルに表示したい場合は、 "Member"クラスの拡張を作成し、dev/buildを実行すると、そこに表示されます。 – Dallby