2011-09-11 8 views
0

と形で存在する場合、エラーをキャッチすることができるようにしたいが、コードです:ここでは私は1つが、ここで検証

try { 

     $result = Model_User::update_user($_POST); 

      // message: save success 
     Message::add('success', __('Values saved.')); 
     // redirect and exit 
     $this->request->redirect('user/profile'); 
     return; 
    } catch (Exception $e) { 
     // Get errors for display in view 
     // Note how the first param is the path to the message file (e.g. /messages/register.php) 
     Message::add('error', __('Error: Values could not be saved.')); 
     $errors = $e->errors('register'); 
     $errors = array_merge($errors, (isset($errors['_external']) ? $errors['_external'] : array())); 
     $view->set('errors', $errors); 
     // Pass on the old form values 
     $user->password = ''; 
     $view->set('data', $user); 
    } 

はModel_Userでupdate_userメソッドのコードです:

public function update_user($fields) 
    { 
      $validation = Validation::factory($fields) 
        ->rules('password', $this->_rules['password']) 
        ->rules('password_confirm', $this->_rules['password_confirm']) 
        ->filters('password', $this->_filters['password']); 

      $this->validate($fields); 
      $users = CASSANDRA::selectColumnFamily('Users'); 
      if ($users->get_cout($username)) 
      { 
        return $users->insert($uuid, array(
              'username'  => $fields['username'], 
              'password'  => $fields['password'], 
              'email'   => $fields['email'], 
              'modify'  => date('YmdHis', time()), 
            )); 
      } 
      else 
      { 
        return $validation; 
      } 
    } 

ErrorException [ Fatal Error ]: Call to undefined method ErrorException::errors() 

この行に貼り付け:

私は今、このエラーを取得しています
117    $errors = $e->errors('register'); 

ありがとうございました!

答えて

1

検証エラーを処理するには、Validation_Exceptionをキャッチする必要があります。

errors()メソッドを持つこの種の例外のみです。あなたのコードは、あなた自身がエラー処理をする必要がある、他の種類の例外をスローしています。

ので、

} catch (Exception $e) {

} catch (Validation_Exception $e) { 
    $errors = $e->errors('register'); 
    ... 
} catch (Exception $e) { 
    // Do your error handling by hand 
} 
に変更
関連する問題