2016-11-15 1 views
2

В Laravel 5.3 мы пытаемся создать форму, в которой пользователь может обновить свои данные профиля, включая новый пароль.Использование запроса в Eloquent Model Observer

Однако мы хотим установить пароль только в том случае, если он был отправлен.

Мы используем структуру CRUD, которая обрабатывает обновление моделей, и мы не хотим откатывать собственный метод update(Request $request).

Мы знаем, что вы можете зарегистрировать наблюдателей модели, аналогичные

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

}); 

Мы надеялись достичь что-то похожее на

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

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

}); 

Однако, когда мы достигаем $ запрос, его совершенно пустой. например, если мы делаем dd($request->all()); его пустым массивом, однако если мы выгрузим dd($_POST);, мы получим все.

Я предполагаю, что это из-за того, что вещи заказаны, а система запросов еще не загружена.

Есть ли способ получить запрос без прямого доступа к $_POST?

Благодаря

+0

Что такое точка это ?, laravel использует bcrypt для хэш-паролей из коробки. – Neat

+0

Прочтите вопрос еще раз, и это может иметь смысл, кажется, все понимают: D – Owen

ответ

5

Laravel 5.3+

request() помощник должен работать для вас:

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

Вы можетесвойство доступа с:

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

Lumen 5.3+

request() помощник не доступен в люменах так что вам нужно будет использовать контейнер IoC.

app('Illuminate\Http\Request')

Пример:

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

2

Вы можете использовать request помощник фикцию как:

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

В качестве альтернативы двух других ответов, вы можете передать запрос через функцию:

User::created(function(User $user) use ($request) { 
Смежные вопросы