在不为每个输入字段设置变量的情况下在不同位置显示表单的错误

时间:2015-03-01 22:44:59

标签: php

我希望你理解我的头衔。

我不想在提交的表单中显示所有错误的列表,而是在表单中的字段旁边显示它们:

这是我的代码的简短片段:

$errors = array();

if (empty($subject)) {
    $errors[] = $lang['Empty Subject'];
}

if (empty($category)) {
    $errors[] = $lang['Empty Category'];
}

if (strlen($ath) > 255) {
    $errors[] = $lang['Too Long'];
}

if (!validate_string($str)) {
    $errors[] = $lang['Invalid String'];
}

and the list goes on...

用于显示:

if (!empty($errors)) {
foreach ($errors as $error)
$page['errors'] = array();
    $page['errors'][] =  '<li class="red"><span>'.$error.'</span></li>';
}

我知道我可以为每个错误设置一个变量,但这似乎不是一个聪明的想法,这会起作用,但它看起来很愚蠢:

if (empty($subject)) {
    $error_subject = $lang['Empty Subject'];
}

if (empty($category)) {
    $error_category = $lang['Empty Category'];
}

然后在每个领域旁边:

Subject:
<input type="text" name="subject"><?php echo isset($error_subject) ? '<span style="color: red">'.$error_subject.'</span>' : '';

Category:
<input type="text" name="category"><?php echo isset($error_category) ? '<span style="color: red">'.$error_category.'</span>' : '';

然而,反正一次只显示1个错误。

专业人士如何做到这一点?

1 个答案:

答案 0 :(得分:0)

动态创建输入

$inputs=array('subject','category');  //etc

foreach ($inputs as $input){
<input type="text" name="{$input}"><?php echo isset(${$error_.$input} ? '<span style="color: red">'.${$error_.$input}.'</span>' : '';
}