如何从check_required_fields函数正确显示错误消息?

时间:2012-09-04 14:06:27

标签: php function field required

嗨,我想要一些帮助。我有一个函数来验证所需的表单字段,我通过req。数组中的字段,因此如果为空,则first_name返回错误消息:“first_name为空”。 。问题是我想让消息中的字段名称对用户看起来更“友好”,没有camelCases或'_'。我怎样才能做到这一点?

P.S。这是我的代码:

$required_fields = array('first_name', 'last_name', 'email', 'profileInfo', 'message');
$errors = array_merge($errors, check_required_fields($required_fields));

现在输出错误消息如下所示: “first_name是必需的”或“需要profileInfo”。 功能如下:

function check_required_fields($required_fields) {
$field_errors = array();
foreach($_POST as $field=>$value){
    if(empty($value) && in_array($field, $required_fields) === true){
        $field_errors[] = "the " . $field . " is required.";
        //break 1;
    }
}
return $field_errors;

}

1 个答案:

答案 0 :(得分:2)

您可以为每个必填字段添加标签......

$required_fields = array(
        'first_name' => 'First Name',
        'last_name' => 'Last name',
        'email' => 'Email Address',
        'profileInfo' => 'Profile information',
        'message' => 'Message'
    );
$errors = array_merge($errors, check_required_fields($required_fields));

您需要更改check_required_fields方法才能正确处理$required_fields数组,如下所示:

function check_required_fields($required_fields)
{
    $field_errors = array();
    foreach ($_POST as $field => $value)
    {
        if (empty($value) && array_key_exists($field, $required_fields) === true)
        {
            $field_errors[] = "the " . $required_fields[$field] . " is required.";
            //break 1;
        }
    }
    return $field_errors;
}

编辑:我刚刚注意到$_POST上的循环只有在设置字段时才能按预期工作。请尝试以下方法:

function check_required_fields($required_fields)
{
    $field_errors = array();
    foreach ($required_fields as $field => $label)
    {
        $value = $_POST[$field];

        if (empty($value))
        {
            $field_errors[] = "the " . $label . " is required.";
            //break 1;
        }
    }
    return $field_errors;
}