2012-09-04 92 views
0

嗨,我想请一些帮助。我有一个验证表单所需字段的函数,其中我传递了req。字段放在数组中,所以如果为空,例如first_name返回错误消息:“first_name为空。” 。问题是我想让邮件中的字段名称对用户看起来更“友好”,没有驼峰或'_'。我怎样才能做到这一点?如何正确显示来自check_required_fields函数的错误消息?

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; 

}

回答

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; 
} 
相关问题