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