[英]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.