gpt4 book ai didi

silverstripe - 在 Controller 扩展中提交表单 - SilverStripe 3.4.0

转载 作者:行者123 更新时间:2023-12-04 05:23:25 24 4
gpt4 key购买 nike

我正在尝试提交在 Controller 扩展中创建的表单。提交后,它抛出一个错误

enter image description here

遗憾的是,我不知道为什么或如何解决这个问题,在不丢失验证构建等的情况下

我可以手动将表单操作更改为“doSectionForm”,这样我将收到表单数据,但丢失了所有验证。

这是我的代码的摘录。

<?php
class SectionsPageControllerExtension extends DataExtension {

private static $allowed_actions = [
'SectionForm'
];

public function SectionForm($id = null) {
$fields = FieldList::create(
HiddenField::create('SectionFormID')
->setValue($id)
);

$required = RequiredFields::create();
$actions = FieldList::create(
FormAction::create('doSectionForm', 'Absenden')
);

$form = Form::create($this->owner, 'SectionForm', $fields, $actions, $required);
// $form->setFormAction($this->owner->Link() . 'doSectionForm');

return $form;
}
}

public function doSectionForm($data) {
echo '<pre>';
print_r($data);
}
}

最佳答案

Controller 上的操作通常接收 SS_HTTPRequest 实例作为参数。这与您的 $id = null 参数冲突。因此出现错误消息。

您不应在表单方法中使用参数,或者如果您绝对需要在模板中使用参数,请务必检查 $id 参数的类型是否为 SS_HTTPRequest 首先(提交表单时会出现这种情况)。

一个简单的解决方法是重写代码,如下所示:

$fields = FieldList::create(
HiddenField::create('SectionFormID')->setValue(
($id instanceof SS_HTTPRequest) ? $id->postVar('SectionFormID') : $id
)
);

关于silverstripe - 在 Controller 扩展中提交表单 - SilverStripe 3.4.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37874714/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com