我正在尝试提交在控制器扩展中创建的表单.提交后,它会抛出一个错误
可悲的是,我不知道为什么或如何解决这个问题,而不会失去验证中的构建等等.
我可以手动将表单操作更改为"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);
}
}
Run Code Online (Sandbox Code Playgroud)
控制器上的操作通常会接收SS_HTTPRequestas参数的实例.这与您的$id = null参数冲突.因此错误消息.
您不应该使用表单方法的参数,或者如果您对模板绝对需要它,请确保检查$id参数是否为SS_HTTPRequest第一类(这将是提交表单时的情况).
一个简单的解决方法是重写代码,如下所示:
$fields = FieldList::create(
HiddenField::create('SectionFormID')->setValue(
($id instanceof SS_HTTPRequest) ? $id->postVar('SectionFormID') : $id
)
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
144 次 |
| 最近记录: |