php - 页面上多个时显示错误的错误消息
问题描述
我在一个页面上有多个基本表单,由一个具有与所显示内容相关的唯一 ID 的 getter 调用:
public function getForm($ID) {
$form = Form::create(
$this,
'',
$fields = FieldList::create(
TextField::create('Name', 'Name'),
HiddenField::create('ID', 'ID', $ID)
),
FieldList::create(
FormAction::create('Submit', 'Submit')
)
);
}
如果Name
不是唯一的,我想在函数中设置错误消息submit
:
public function Submit($data, $form = null) {
//check stuff
$form->addErrorMessage('Name', 'Name is already taken', 'error');
return $this->redirectBack();
}
这可行,但错误消息显示在第一个表单而不是相关表单上。
如何将错误消息放在正确的表单上?我正在使用 SilverStripe 3.7。
解决方案
使用addErrorMessage
时会将消息添加到相关命名的FormField
. 您最好以某种方式将所有字段更改为唯一字段,然后将消息添加到唯一字段。使用记录的 ID 可以工作:
public function getForm($ID) {
$form = Form::create(
$this,
'',
FieldList::create(
TextField::create('Name_'.$ID, 'Name'),
HiddenField::create('ID', 'ID', $ID)
),
FieldList::create(
FormAction::create('Submit', 'Submit')
)
);
}
public function Submit($data, $form = null) {
//check stuff
$form->addErrorMessage('Name_'.$data['ID'], 'Name is already taken', 'error');
return $this->redirectBack();
}
推荐阅读
- java - Java nio SocketChannel 创建失败
- firebase - 通过 CreatedAt 反应原生排序数据?
- c - wait(NULL) 不等到分叉进程完成
- python - torch.utils.data.TensorDataset 中的数据加载
- unity3d - 如何解决问题:Unity Sphere Collider Change the Orientation of GameObject?
- google-sheets - 默认为 'x' 的嵌套 IF 语句
- postgresql - 使用用户名在书架 js 中更新
- ubuntu - Ubuntu ldap 不返回所有用户的组
- firebase - Firestore / Flutter - 如何获取文档 ID?
- c++ - C++中使用函数的计算器