我想打印一个包含错误列表的div。通过在foreach循环内迭代来找到错误。我想在变量中包含整个div和列表,以便我可以在所需的部分中打印它。
这就是我在做的事情:
errmessage = "";
//more code, if etc
else {
$errmessage .= '<div class="form-error alert alert-danger"><strong>Form submission failed!</strong><ul>';
foreach($vresult->getErrors() as $v) {
$errmessage .= '<li>'.$v.'</li>';
}
$errmessage .= '</ul></div>';
}
在文件的另一部分:
<form method="post">
<?php
echo $errmessage;
?>
这是正确的方法,如果有错误我想回复,否则如果没有则不打印。这对我有用,但想知道是否还有其他好的做法。
答案 0 :(得分:1)
您的解决方案可以使用,但我建议使用这样的面向对象方法:
<?php
class ErrorManager
{
private $errors = Array();
public function AddError($errorMessage)
{
array_push($this->errors,$errorMessage);
}
public function GetErrorMessage()
{
$finalMessage = "";
foreach ($this->errors as &$error) {
$finalMessage .= $error ."\r\n";
}
return $finalMessage;
}
}
- 使用类-----
$errMngr = new ErrorManager();
$errMngr->AddError('A failure occured!');
$errMngr->AddError('another failure :(');
echo $errMngr->GetErrorMessage();
//OR Use this for HTML
echo nl2br($errMngr->GetErrorMessage());
?>
这样您就可以使用\ n \ r分隔符获取纯文本字符串。您可以在日志文件中输出错误,并使用nl2br()
您还可以更改类以使用div + list,如下所示:
public function GetErrorMessageHTMLList()
{
$finalMessage = "<div><ul>";
foreach ($this->errors as &$error) {
$finalMessage .= '<li>'.$error .'</li>';
}
return $finalMessage.'</ul></div>';
}
答案 1 :(得分:0)
解决方案看起来很好,一个建议是
在其他情况下,如果您不想显示&#34;表单提交失败!&#34;没有错误时的消息
if(!empty($vresult->getErrors()) {
//Build error message inside
}