Php 当页面上出现多个时,错误消息显示在错误的起始位置
我在一个页面上有多个基本表单,由getter调用,getter具有与所显示内容相关的唯一ID:Php 当页面上出现多个时,错误消息显示在错误的起始位置,php,validation,silverstripe,Php,Validation,Silverstripe,我在一个页面上有多个基本表单,由getter调用,getter具有与所显示内容相关的唯一ID: public function getForm($ID) { $form = Form::create( $this, '', $fields = FieldList::create( TextField::create('Name', 'Name'), HiddenField::create('I
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')
)
);
}
如果名称
不唯一,我想在提交
功能中设置一条错误消息:
public function Submit($data, $form = null) {
//check stuff
$form->addErrorMessage('Name', 'Name is already taken', 'error');
return $this->redirectBack();
}
这可以工作,但错误消息显示在第一个表单上,而不是相关表单上
如何将错误消息放在正确的表单上?我使用的是SilverStripe 3.7。当使用
addErrorMessage
时,这会将消息添加到相关命名的表单字段中。您最好以某种方式将所有字段更改为唯一,然后将消息添加到ta unique字段。使用记录的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();
}