将值从一种方法返回到另一种方法

时间:2012-08-02 19:13:25

标签: php validation

我不知道为什么这根本不起作用。我理解这可能是错误的原因。

这是情况。

  1. MVC模式
  2. 表单验证内容
  3. 以下是代码

    public function userExist($data) 
    {
        $string = "SELECT student_number FROM users WHERE student_number = :user";
        $sth = $this->db->prepare($string);
        $sth->execute(array(
            ':user' => $data['user']
        ));
        return $sth->rowCount() == 0 ? true : false;
    }
    
    public function validate($data) {
        $this->userExist($data);
    }
    

    我想要的是返回一个字符串,如果userExist方法为false,则表示“用户存在”...但此代码不起作用:

    if($sth->rowCount() == 0) {
        return true;
    } else {
        return "User Already Exists";
    }
    

    这就是我如何在控制器中调用它们:

    if ($this->model->validate($data) == true) {
        $this->model->create($data);
        header('Location: '.URL.'users');
    } else {
        echo $this->model->validate($data);
        die();
    }
    

    您认为最佳解决方案是什么?

1 个答案:

答案 0 :(得分:2)

首先,您需要返回validate:

的值
public function validate($data) {
    $this->userExist($data);
}

但这里还有其他一些问题。您无需在控制器中两次调用$ this-> model-> validate($ data)。你可以这样做:

$result = false;
$result = $this->model->validate($data);
if ( true === $result {
    $this->model->create($data);
    header('Location: '.URL.'users');
} else {
    die($result);
}