簡體   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