在Silverstripe中编辑提交的表单数据

在Silverstripe中编辑提交的表单数据,silverstripe,silverstripe-4,Silverstripe,Silverstripe 4,因此,我希望能够有一个网页,这是唯一可用的网站管理员列出了提交的表格和链接的摘要。因此,单击摘要后,它会将您带到一个相同的表单,该表单允许您编辑/更新表单。除了更新部分,我的一切都正常,我被卡住了 提交应用程序工作正常: class SubmitApplicationPageController extends PageController{ protected function init() { parent::init(); } privat

因此,我希望能够有一个网页,这是唯一可用的网站管理员列出了提交的表格和链接的摘要。因此,单击摘要后,它会将您带到一个相同的表单,该表单允许您编辑/更新表单。除了更新部分,我的一切都正常,我被卡住了

提交应用程序工作正常:

class SubmitApplicationPageController extends PageController{
    protected function init()
    {
        parent::init();
    }

    private static $allowed_actions = [
        'ApplicationForm'
    ];

    public function ApplicationForm()
    {
        $fields = new FieldList(
            TextField::create('First_Name')->setTitle('First Name'),
            TextField::create('Last_Name')->setTitle('Last Name')
        );

        $actions = new FieldList(
            FormAction::create('doSubmitApplication')->setTitle('Submit')
        );

        $validator = new RequiredFields([
            'First Name',
            'Last Name',
        ]);

        return new Form($this, 'ApplicationForm', $fields, $actions, $validator);
    }

    public function doSubmitApplication($data, Form $form)
    {
        $submission = new Application();
        $form->saveInto($submission);
        $submission->write();
        $form->sessionMessage('Thank you for your submission we will get back to you as soon as possible', 'success');
        return $this->redirectBack();
    } 
}
在页面中列出仅对管理员可用的应用程序:

<ul>
  <% loop $Applications %>
    <li>$First_Name $Last_Name <a href="view-application/?id=$ID">View Application</a></li>
  <% end_loop %>
</ul>
doUpdateApplication函数需要知道要更新的记录,以便使用隐藏字段

$fields = new FieldList(
    HiddenField::create('id'),
    TextField::create('First_Name')->setTitle('First Name'),
    TextField::create('Last_Name')->setTitle('Last Name')
);
然后可以使用此id确定要更新的记录

public function doUpdateApplication($data, Form $form) {
    $submission = DataList::create('Application')->byId($data['id']);
    $form->saveInto($submission);
    $submission->write();
    //the rest of your code
}
public function doUpdateApplication($data, Form $form) {
    $submission = DataList::create('Application')->byId($data['id']);
    $form->saveInto($submission);
    $submission->write();
    //the rest of your code
}