默认情况下,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数据的关键,不是常规登录,因此它是一种额外的安全方法,可以保护一些敏感数据的安全。
答案 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';
}
}
在验证之后,还需要在嵌套步骤中显示带有模型记录的常规网格域,但是当我成功时,我也会返回一个答案。