2016-07-08 22 views
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(); 
    } 
} 

答えて

1

私の答えは、静的な許可されたアクションを含めるためにはdev/buildが必要です。これは通常私のためのものです。

私の主な答えは、ユーザープロファイルの管理のために、このモジュールを使用することですしかし、それは多くのカスタマイゼーションを可能にし、時間をたくさん保存されます....

https://github.com/silverstripe-australia/silverstripe-memberprofiles

「新しいページタイプ「メンバープロフィールページ」と呼ばれるCMSに追加されます。これにより、ユーザーがプロフィールを登録および/または管理できるページを作成することができます。

+0

ありがとうございます。プロファイルページのコンテンツ設定で、他のフィールドを 'グリッドフィールド'に追加できますか?私は電話番号とアドレスをフロントエンドに表示しておきたいと思います。 @Barry – Dallby

+0

これらはすべて、上記のモジュールを使用する際にGUIを使用して設定できます。ありがとう。 – Barry

+0

私はこの反応を見る前に実際にそれを理解しました。 ... CMS管理者の[メンバープロファイル]ページ設定の[プロファイル]タブをクリックします。余分なフィールドをメンバープロファイルに表示したい場合は、 "Member"クラスの拡張を作成し、dev/buildを実行すると、そこに表示されます。 – Dallby

関連する問題