用PHP中的$_SESSION显示中的错误数组



我制作了一组错误消息,我想在必要时只显示

$_SESSION['error']=[
'error_clientName' => 'Le nom du client doit comporter au moins 2 caractères',
'error_color' => 'La couleur doit être au format hexadécimal',
'error_nav' => 'Merci de choisir une couleur de de barre de navigation',
'error_download' => 'Une erreur est survenue durant le téléchargement',
'error_logo' => 'Le fichier doit être une image png, jpg ou svg',
'error_mockup' => 'Le fichier doit être une image en jpg',
'error_empty_logo' => 'Merci de choisir un logo',
'error_empty' => 'Merci de remplir tous les champs',
];
$errors=$_SESSION[ 'error' ];

我不知道如何处理它来显示消息,首先我尝试了这个,但它忽略了所有消息,合乎逻辑。。。

if(!empty($_SESSION['error'])) {
echo implode('<br>', $_SESSION['error']);
unset($_SESSION['error']);
}

然后我尝试了一个循环来遍历我的数组,但它不起作用:

foreach ($errors as $error){
echo implode('<br>', $error);
unset ($error);
}

你有什么建议吗?thx:(

您必须知道哪些错误代码是"相关";以仅显示相关的。

然后循环浏览代码,并在显示消息之前检查该消息是否存在于会话中

$relevantErrorCodes = ['error_clientName', 'error_empty_logo'];
foreach($relevantErrorCodes as $errorCode) {
if (isset($_SESSION['error']) && isset($_SESSION['error'][$errorCode])) {
echo $_SESSION['error'][$errorCode] . '<br />';
}
}

如果你只想在列表中显示每一个,每行一个。

难道你不能用一个<ul> > <li>包装它并通过CSS处理换行吗?

否则你应该可以做一个…

foreach ($errors as $error){
echo "{$error}<br>"
}

编辑:2020年9月12日

哦,对了,我现在明白了,我误解了你的问题!

你是如何确定你需要哪一个的?

根据您自己的示例,您似乎试图使用implode('<br>', $arr)解决方案同时显示所有消息

为了确保我正确理解,这是一个静态列表,对吗?并且您只想在需要时检索每条消息?

或者错误数组是从例如表单验证错误中动态添加到列表中的?(或任何其他来源(,然后您只需要在需要时显示它们?

如果我正确理解你的问题,仍然不是100%,但这里有几个例子。

示例#1

/**
* Function error_message
* 
* @param $message_id
*
* @return string
*/
function error_message($message_id) {
$errors = [
'error_clientName' => 'Le nom du client doit comporter au moins 2 caractères',
'error_color' => 'La couleur doit être au format hexadécimal',
'error_nav' => 'Merci de choisir une couleur de de barre de navigation',
'error_download' => 'Une erreur est survenue durant le téléchargement',
'error_logo' => 'Le fichier doit être une image png, jpg ou svg',
'error_mockup' => 'Le fichier doit être une image en jpg',
'error_empty_logo' => 'Merci de choisir un logo',
'error_empty' => 'Merci de remplir tous les champs',
];

return isset($errors[ $message_id ]) ? $errors[ $message_id ] : '' ;
}
/**
* Usage
*/
echo error_message('error_clientName');

示例2:或者,如果您想在特定位置显示一组错误,可以在错误数组中将它们划分为多个类别。

$errors = [
['error_category_1'] => [
'error_clientName' => 'Le nom du client doit comporter au moins 2 caractères',
'error_color' => 'La couleur doit être au format hexadécimal',
'error_nav' => 'Merci de choisir une couleur de de barre de navigation',
],
['error_category_2'] => [
'error_download' => 'Une erreur est survenue durant le téléchargement',
'error_logo' => 'Le fichier doit être une image png, jpg ou svg',
],
['error_category_3'] => [
'error_mockup' => 'Le fichier doit être une image en jpg',
'error_empty_logo' => 'Merci de choisir un logo',
'error_empty' => 'Merci de remplir tous les champs',
],
];

最新更新