Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 扩展错误消息变量_Php_Forms_Validation - Fatal编程技术网

Php 扩展错误消息变量

Php 扩展错误消息变量,php,forms,validation,Php,Forms,Validation,现在我只有一个错误消息变量,它从创建验证错误的表单输入字段中提取项名称。因此,如果在“firstname”输入字段中只键入一个字母,则错误消息应显示如下 firstname必须至少包含2个字符 这很好,但是我想创建新的变量,这样我就可以 $firstname_validate_error 在firstname输入字段旁边,如果该输入字段正在抛出错误,则该错误将出现在该字段旁边 有没有一种方法可以用我现有的代码做到这一点,而不让这成为一项艰巨的任务?我不知道如何构造一个变量来使用我的valida

现在我只有一个错误消息变量,它从创建验证错误的表单输入字段中提取项名称。因此,如果在“firstname”输入字段中只键入一个字母,则错误消息应显示如下

firstname必须至少包含2个字符

这很好,但是我想创建新的变量,这样我就可以

$firstname_validate_error
在firstname输入字段旁边,如果该输入字段正在抛出错误,则该错误将出现在该字段旁边

有没有一种方法可以用我现有的代码做到这一点,而不让这成为一项艰巨的任务?我不知道如何构造一个变量来使用我的validate类实现这一点

我的验证错误来自以下内容:

} else {
                foreach($validation->errors() as $error) {
                    $error;
                }
是否有一种方法可以将其结构化,以便在表单中的每个输入字段旁边放置某种错误变量,这样,如果该输入字段抛出验证错误,就会出现错误消息

if(Input::exists()) {
   if(Token::check(Input::get('token'))) {

    if(Input::exists()) {
        $validate = new Validate();
        $validation = $validate->check($_POST, array(
            'firstname' => array(
                'required' => true,
                'min' => 2,
                'max' => 50
            ),
            'lastname' => array(
                'required' => true,
                'min' => 2,
                'max' => 50
            ),
            'email' => array (
                'required' => true,
                'min' => 2,
                'max' => 50
            ),
            'phone_number' => array (
                'required' => true,
                'min' => 7,
                'max' => 15
            ),
            'username' => array(
                'required' => true,
                'min' => 4,
                'max' => 20,
                'unique' => 'users'
            ),
            'password' => array(
                'required' => true,
                'min' => 6
            ),
            'password_again' => array(
                'required' => true,
                'matches' => 'password'
            )

        ));
        if($validation->passed()) {
            $user = new User();

            $salt = Hash::salt(32);

            try {
                $user->create(array(
                    'firstname' => Input::get('firstname'),
                    'lastname' => Input::get('lastname'),
                    'email' => Input::get('email'),
                    'phone_number' => Input::get('phone_number'),
                    'username' => Input::get('username'),
                    'password' => Hash::make(Input::get('password'), $salt),
                    'salt' => $salt,
                    'joined' => date('Y-m-d H:i:s'),
                    'group' => 1
                ));
                $success = "You have successfully created an account. We will notify you once the account has been approved. Then you will be able to login.";
                echo $success;
            } catch(Exception $e) {
                    die($e->getMessage());
                }
            } else {
                foreach($validation->errors() as $error) {
                    $error;
                }
            }
       }
    }
 }  
与此相关的验证类

public function check($source, $items = array()) {
    foreach($items as $item => $rules) {
        foreach($rules as $rule => $rule_value) {

            $value = trim($source[$item]);
            $item = escape($item);

            if($rule === 'required' && empty($value)) {
                $this->addError("{$item} is required");
            } else if(!empty($value)) {
                switch($rule) {
                    case 'min':
                        if(strlen($value) < $rule_value) {
                            $this->addError("{$item} must be a minimum of {$rule_value} characters.");
                        }
                    break;
                    case 'max':
                        if(strlen($value) > $rule_value) {
                            $this->addError("{$item} must be a maximum of {$rule_value} characters.");
                        }
                    break;
                    case 'matches':
                        if($value != $source[$rule_value]) {
                            $this->addError("{$rule_value} must match {$item}");
                        }
                    break;
                    case 'unique':
                        $check = $this->_db->get($rule_value, array($item, '=', $value));
                        if($check->count()) {
                            $this->addError("{$item} already exists.");
                        }
                    break;
公共函数检查($source,$items=array()){
foreach($items为$item=>$rules){
foreach($rules as$rule=>$rule\u值){
$value=trim($source[$item]);
$item=转义($item);
如果($rule=='required'&&empty($value)){
$this->addError(“{$item}是必需的”);
}如果(!空($value)){
开关($规则){
案例“min”:
if(strlen($value)<$rule\u值){
$this->addError(“{$item}必须至少为{$rule_value}个字符。”);
}
打破
案例“max”:
if(strlen($value)>rule_值){
$this->addError(“{$item}必须最多为{$rule\u value}个字符。”);
}
打破
案例“匹配”:
如果($value!=$source[$rule\u value]){
$this->addError(“{$rule_value}必须匹配{$item}”);
}
打破
“唯一”情况:
$check=$this->\u db->get($rule\u value,array($item,'=',$value));
如果($check->count()){
$this->addError(“{$item}已经存在。”);
}
打破
我的表格是这样的

<form action="" method="POST">
    <div class="field">
        <label for="firstname">First Name</label>
        <input type="text"  class="inputbar" name="firstname" value="<?php echo escape(Input::get('firstname')); ?>" required>
    </div>
    <div class="field">
        <label for="lastname">Last Name</label>
        <input type="text"  class="inputbar" name="lastname" value="<?php echo escape(Input::get('lastname')); ?>" required>
    </div>

名字

您可以使用一些神奇的功能,如:

 $validate = new <classname of your validation class>;
 ....
 $validate->field_firstname();

您可以使用一些神奇的功能,如:

 $validate = new <classname of your validation class>;
 ....
 $validate->field_firstname();