开发者

I want to be able to catch an error if there is one in a form with Validation

Here is the code:

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

Here is the code of update_user method in Model_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;
            }
    }

I am now getting this error:

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

Stuck on this line:

117             $errors = $e->errors('register');

Thanks in advance for any help!


You need to catch a Validation_Exception for handling validation errors.

Only this kind of exception has an errors() method. Your code is throwing some other kind of exception, for which you need to do the error handling yourself.

So, change

} catch (Exception $e) {

to

} catch (Validation_Exception $e) {
    $errors = $e->errors('register');
    ...
} catch (Exception $e) {
    // Do your error handling by hand
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜