Silverstripe中模型管理员的简单表单

时间:2016-04-05 15:03:03

标签: php silverstripe

默认情况下,Model Admin用于管理模型,如果跳过模型,则结果是错误。

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

我想首先显示一个简单的表单(密码和操作按钮的文本字段),然后如果密码正确,它应该转到网格域。

我尝试更改模型中的getCMSfields,但只有当我点击gridfield中的一条记录时,该字段才可见:

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

编辑:

这个二级密码是解密该DataObject数据的关键,不是常规登录,因此它是一种额外的安全方法,可以保护一些敏感数据的安全。

1 个答案:

答案 0 :(得分:1)

对于那些处境相似的人,我想通了。我们可以使用LeftAndMain而不是使用ModelAdmin。所以代码将是:

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';
    }
}

在验证之后,还需要在嵌套步骤中显示带有模型记录的常规网格域,但是当我成功时,我也会返回一个答案。