0

なぜこれがまったく機能しないのかわかりません。私の理解が間違っているのかもしれません。

これが状況です。

  1. MVC パターン
  2. フォーム検証スタッフ

ここにコードがあります

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();
}

最善の解決策は何だと思いますか?

4

1 に答える 1

2

まず、validateの値を返す必要があります。

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

しかし、ここには他にもいくつか問題があります。コントローラで$this->model-> validate($ data)を2回呼び出す必要はありません。あなたは次のようなことをすることができます:

$result = false;
$result = $this->model->validate($data);
if ( true === $result {
    $this->model->create($data);
    header('Location: '.URL.'users');
} else {
    die($result);
}
于 2012-08-03T04:49:58.457 に答える