【发布时间】:2016-04-06 14:38:04
【问题描述】:
目前我有一个名为“应用程序”的 LeftAndMain 部分,其中包含一个带有密码字段的表单:
代码如下:
class Applications extends LeftAndMain {
static $url_segment = 'applications';
static $menu_title = 'Applications';
static $url_rule = '$Action/$ID';
public function init(){
parent::init();
}
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){
$form->sessionMessage('Correct password. I will redirect you to manage your model', 'success');
return $this->redirectBack();
}
}
提交此表单时,操作函数应验证它是否与某些内容相等(在我的情况下,它是从数据库中解密数据的密钥),然后重定向/显示 Gridfield。
第二点是 ModelAdmin,我可以在其中通过 GridField 管理数据(来自该数据库)。
代码如下:
class Applications2 extends ModelAdmin {
static $url_segment = 'applications2';
static $menu_title = 'Applications2';
private static $managed_models = array(
'SecureFormInput'
);
}
这是我的问题:有可能做到这一点吗?任何建议/帮助,因为我尝试了一段时间但没有结果。
【问题讨论】:
-
您尝试实施的是对同一模型管理员的额外保护。只需在 getEditForm() 中使用条件即可返回您的自定义表单或标准 ModelAdmin 表单。 ( noPassword ? showPasswordForm : parent:getEditForm )
标签: php backend silverstripe