【发布时间】:2023-12-05 14:29:01
【问题描述】:
我试图弄清楚如何向表单字段添加多个错误消息。这是我目前在 doFormAction 方法中使用的逻辑:
$errors = $validation->ValidateInput($data);
foreach($errors as $key => $value){
if(!empty($value)){
$errorMessages = "<ul>";
foreach($value as $errorMessage){
$errorMessages = $errorMessages . "<li>" . $errorMessage . "</li>"
}
$errorMessages = $errorMessages . "</ul>";
$form->AddErrorMessage($key, $errorMessages, 'bad');
}
}
上面的打印输出实际上不会为我打印出列表,它会在字符打印到页面上之前对字符进行 html 编码。如果我尝试使用这样的东西:
$form->AddErrorMessage("Field1", "First Error", 'bad');
$form->AddErrorMessage("Field1", "Second Error", 'bad');
我只会看到最后一条错误消息。 silverstripe 表单有没有办法在单个字段上生成多个错误消息?
编辑: 这是 silverstripe 的函数:
public function addErrorMessage($fieldName, $message, $messageType, $escapeHtml = true) {
Session::add_to_array("FormInfo.{$this->FormName()}.errors", array(
'fieldName' => $fieldName,
'message' => $escapeHtml ? Convert::raw2xml($message) : $message,
'messageType' => $messageType,
));
}
这意味着当我第二次添加错误消息时,它会覆盖第一个错误消息,因为它使用相同的名称。
【问题讨论】:
标签: forms silverstripe