При звонке User->update($data)
с массовым назначением, возможно ли установить пароль пользователя только в том случае, если он был передан?
Посмотреть:
<form>
<input type="text" name="name">
<input type="text" name="email">
<input type="password" name="password">
<input type="submit">
</form>
Модель:
<?php
class User extends Eloquent {
public static $rules = [
'name' => 'required:max:32',
'email' => 'required|max:128'
'password' => 'min:8|max:128'
];
// Allow mass-assignment for:
protected $fillable = ['name', 'email', 'password'];
// The attributes excluded from the model's JSON form.
protected $hidden = ['password', 'remember_token'];
}
контроллер:
class UsersController extends BaseController {
public function update($id)
{
$user = User::findOrFail($id);
$validator = Validator::make($data = Input::all(), User::$rules);
if ($validator->fails())
return Redirect::back()->withErrors($validator)->withInput();
$user->update($data); // How do I only update password if password was passed in?
}
}
Вы должны использовать:
$user->password = Hash::make(Input::get('password'));
$user->save();
вместо:
$user->update($data);
обновить только пароль пользователя.
Других решений пока нет …