2016-04-05 8 views
0

デフォルトでは、モデル管理はモデルを管理するために使用され、モデルをスキップするとエラーになります。私は、単純なフォーム(パスワードとアクションボタンのテキストフィールド)を表示したいシルバーストライプのModel Adminのシンプルなフォーム

/* private static $managed_models = array(
    'OneModel' 
); */ 

パスワードが正しい場合は、最初の、そして、それはgridfieldに行く必要があります。

私はモデル内部getCMSfieldsを変更しようとしたが、フィールドには、私はgridfieldからレコードの1つをクリックした場合にのみ表示されます:

public function getCMSfields(){ 
    $fields = FieldList::create(TabSet::create('Root', $login = Tab::create('Authorise', 
     TextField::create('Password') 
    ))); 
    return $fields; 
} 

編集:

この二次パスワードそれはですそのDataObjectのデータを復号化するためのキーは通常のログインではないため、機密データを安全に保つための追加のセキュリティ方法です。

+3

CMS内部にログオンすることをお勧めします。ユーザーがこのセクションを表示できるかどうかを制御するために、SilverStripe認証とアクセス許可の機能を使用することをお勧めします。 SilverStripeのセキュリティ機能ではなく、CMS内部の余分なログを使用する理由はありますか? – 3dgoo

+3

絶対に!ユーザーが特定のDataObjectを表示または編集する権限を持っている場合、なぜ再びログインする必要がありますか?モデル内でcanCreate()、canView()、canEdit()、canDelete()などのcan *メソッドを上書きし、PermissionProviderを使用してグループのメンバーにグローバル権限を追加できます。 – wmk

+2

私は完全に上記の - アクセス権はユーザーが見ることができるかどうかを判断する必要があります。すでにログインしているシステム内でログインを作成しません。 – Barry

答えて

1

似たような状況の人にはわかりました。 ModelAdminを使用する代わりに、LeftAndMainを使用できます。そのコードは次のようになります。

class Applications extends LeftAndMain { 
    static $url_segment = 'applications'; 
    static $menu_title = 'Applications'; 
    static $url_rule = '$Action/$ID'; 

    public function init(){ 
     parent::init(); 
    } 

    private static $allowed_actions = array(
     'login' 
    ); 

    public function getEditForm($id = null, $fields = null) { 
     $fields = new FieldList(
      TextField::create('Password', ' Password') 
     ); 
     $actions = new FieldList(new FormAction('applicationPassword')); 
     return new Form($this, "EditForm", $fields, $actions); 
    } 

    public function applicationPassword($data, Form $form){ 
     $pass = $data['Password']; 
     $form->sessionMessage('Password submited for testing : '.$pass, 'success'); 
     return $this->redirect('login'); 
    } 

    public function login(){ 
     return 'success'; 
    } 
} 

もう一つの必要性は、モデルのレコードを定期的にgridfieldを表示するには巣のステップで、検証した後、だろうが、私はsuccedとき、私も答えを返します。

関連する問題