如何在Laravel4中使用带有异常错误消息的withErrors?

如何在Laravel4中使用带有异常错误消息的withErrors?,laravel,laravel-4,Laravel,Laravel 4,假设我有此异常消息 catch (Cartalyst\Sentry\Users\LoginRequiredException $e) { echo 'Login field is required.'; } 如何使用withErrors()传递此消息登录字段是必需的 这取决于捕捉异常的位置 Sentry不使用验证程序类。因此,如果您想以Laravel方式返回错误消息,那么应该创建一个单独的Validator对象并首先进行验证,然后在验证通过后才传递给Sentry Sentry将只能传

假设我有此
异常消息

catch (Cartalyst\Sentry\Users\LoginRequiredException $e)
{
     echo 'Login field is required.';
}
如何使用
withErrors()
传递此消息登录字段是必需的


这取决于捕捉异常的位置

Sentry不使用验证程序类。因此,如果您想以Laravel方式返回错误消息,那么应该创建一个单独的Validator对象并首先进行验证,然后在验证通过后才传递给Sentry

Sentry将只能传回1个错误,因为它正在捕获特定的异常。此外,错误的类型将与验证类中的错误不同

此外,如果Sentry捕捉到异常,那么您的验证显然不起作用

下面的代码不是您应该如何做,而是更多地展示了我相信的与Laravel/Sentry合作的方法的组合

示例用户模型

class User extends Eloquent {
  public $errors;
  public $message;

    public function registerUser($input) {

       $validator = new Validator::make($input, $rules);
       if $validtor->fails() {
          $this->errors = $validator->messages();
          return false;
       }

        try {
            // Register user with sentry
            return true;
        }
        catch (Cartalyst\Sentry\Users\LoginRequiredException $e)
        {
            $this->message = "failed validation";

            return false;
        }
       }
    }
}
用户控制器

class UserController extends BaseController {

public function __construct (User $user) { $this->user = $user; }

public function postRegister()
{
    $input = [
        'email' => Input::get('email'),
        'password' => Input::get('password'),
        'password_confirmation' => Input::get('password_confirmation')
    ];

    if ($this->user->registerUser($input)) {
        Session::flash('success', 'You have successfully registered. Please check email for activation code.');
        return Redirect::to('/');
    }
    else {
        Session::flash('error', $this->user->message);
        return Redirect::to('login/register')->withErrors($this->user->errors)->withInput();
    }
}   

很久以前就被打印出来了,而且是徒手输入的,而不是从运行的代码中复制和粘贴的。是作为概念证明而编写的。抱歉,但这不是借口,它与不提供代码一样(或更糟)。错误的代码会阻止那些只想让某些东西工作的人。这不是年龄,这是5个月前。当涉及到安全和登录时,人们不应该寻找快速修复。根据回答。。。清楚地说明
这不是怎么做的,而是一种使用Laravel/Sentry的方法。正因为如此,我已经给了足够的思考的食物,让一些人接受这个想法并在其基础上继续发展。此外,它回答了这个问题,虽然在语法上不正确,但提供了比您更详细和有用的答案。此外,如果内置了php调试器/ide,那么很好——但它不是——它只是一个文本框。
如果$validtor->fails(){
这有多有效?@giannischristofakis该网站的目的不是做其他开发人员的工作,而是帮助他们。
class User extends Eloquent {
  public $errors;
  public $message;

    public function registerUser($input) {

       $validator = new Validator::make($input, $rules);
       if $validtor->fails() {
          $this->errors = $validator->messages();
          return false;
       }

        try {
            // Register user with sentry
            return true;
        }
        catch (Cartalyst\Sentry\Users\LoginRequiredException $e)
        {
            $this->message = "failed validation";

            return false;
        }
       }
    }
}
class UserController extends BaseController {

public function __construct (User $user) { $this->user = $user; }

public function postRegister()
{
    $input = [
        'email' => Input::get('email'),
        'password' => Input::get('password'),
        'password_confirmation' => Input::get('password_confirmation')
    ];

    if ($this->user->registerUser($input)) {
        Session::flash('success', 'You have successfully registered. Please check email for activation code.');
        return Redirect::to('/');
    }
    else {
        Session::flash('error', $this->user->message);
        return Redirect::to('login/register')->withErrors($this->user->errors)->withInput();
    }
}