繁体   English   中英

在Eloquent Model Observer中使用Request

[英]Using Request within Eloquent Model Observer

在Laravel 5.3中,我们尝试创建一个表单,用户可以更新其配置文件详细信息,包括新密码。

但是,我们只想在提交密码时设置密码。

我们正在使用CRUD框架来处理模型的更新,我们不想推出自己的update(Request $request)方法。

我们知道你可以注册类似的模型观察者

User::created(function(User $user){

});

我们希望能够实现类似的目标

User::created(function(User $user){

    if( $request->has('password') ){
        $user->password = bcrypt($request->input('password'));
    }

});

但是,当我们访问$ request时,它完全是空的。 例如,如果我们做dd($request->all()); 它是一个空数组,但是如果我们转出dd($_POST); 我们得到了一切。

我假设这是因为加载了订单,并且请求系统尚未加载。

有没有办法在不直接访问$_POST情况下获取请求?

谢谢

Laravel 5.3+

request()帮助器应该适合你:

if (request()->has('password')) {
    $user->password = bcrypt(request()->password);
}

您可以通过以下方式访问

request()->password
request()->get('password')
request('password')

流明5.3+

request()助手在Lumen中不可用,因此您需要使用IoC容器。

app('Illuminate\\Http\\Request')

例:

if (app('Illuminate\\Http\\Request')->has('password')) { $user->password = bcrypt(app('Illuminate\\Http\\Request')->password); }

您可以使用request帮助程序功能:

if( request()->has('password') ){
    $user->password = bcrypt(request()->get('password'));
}

作为其他两个答案的替代方法,您可以将请求传递给函数:

User::created(function(User $user) use ($request) {

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM