在foreach循环外包裹div并在其他地方回声

时间:2016-10-22 23:10:28

标签: php html foreach echo

我想打印一个包含错误列表的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;
?>

这是正确的方法,如果有错误我想回复,否则如果没有则不打印。这对我有用,但想知道是否还有其他好的做法。

2 个答案:

答案 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()

将其显示为HTML

您还可以更改类以使用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
}