如何从FormRequest类方法中访问当前经过身份验证的用户

时间:2015-04-30 14:32:41

标签: validation laravel input laravel-5

我有一个用户模型,有两个功能来检查用户的性别。对于特定的表单,我创建了一个FormRequest对象。现在,我需要设置一些特定于用户性别的验证规则,即对于男性用户,有一组规则,对于女性用户,则有另一组规则。

这是我的用户模型:

// app\User.php
class User extends Model implements AuthenticatableContract, CanResetPasswordContract {

    use Authenticatable, CanResetPassword;

    public function is_male()
    {
        return $this->gender == Gender::male();
    }

    public function is_female()
    {
        return $this->gender == Gender::female();
    }

    public function profile_ok()
    {
        return $this->status == 'OK';
    }
}

现在在FormRequest类中,有一个authorize() mehtod来检查用户是否已登录并有权访问使用Auth::check()方法和Auth::user()->profile_ok()的表单method(),它可以解决任何错误。但是在rules()方法中,当我尝试通过Auth::user()->is_male()访问当前用户时,它会引发错误,

FatalErrorException in ProfileRequest.php line 34:
Class 'app\Http\Requests\Auth' not found

这是我的FormRequest类:

// app\Http\Requests\ProfileRequest.php
class ProfileRequest extends Request {
    public function authorize()
    {
        if ( !Auth::check() )
        {
            return false;
        }
        return Auth::user()->profile_ok();
    }

    public function rules()
    {
        if(Auth::user()->is_male())
        {
            return ['rule1' => 'required',]; //etc
        }
        if(Auth::user()->is_female())
        {
            return ['rule2' => 'required',]; //etc
        }
    }
}

我做错了什么?如何从rules()方法中访问当前用户?

1 个答案:

答案 0 :(得分:5)

您可以private void button1_Click(object sender, EventArgs e) { button1.Visible = false; this.FormBorderStyle = FormBorderStyle.None; mid.X = this.Width / 2; mid.Y = this.Height / 2; drawerUpdateSchedule.Start(); }

执行此操作