在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
的情况下获取请求?
由于
答案 0 :(得分:11)
Laravel 5.3 +
request()
助手应该适合你:
if (request()->has('password')) {
$user->password = bcrypt(request()->password);
}
您可以使用以下方式访问媒体资源:
request()->password
request()->get('password')
request('password')
流明5.3 +
Lumen中没有request()
助手,因此您需要使用IoC容器。
app('Illuminate\Http\Request')
示例:
if (app('Illuminate\Http\Request')->has('password')) {
$user->password = bcrypt(app('Illuminate\Http\Request')->password);
}
答案 1 :(得分:3)
您可以将request
辅助功能用作:
if( request()->has('password') ){
$user->password = bcrypt(request()->get('password'));
}
答案 2 :(得分:1)
作为其他两个答案的替代方案,您可以将请求传递给函数:
User::created(function(User $user) use ($request) {