, . , , . , , - updateUnique() Ardent. , , , , .
beforeSave() ( ). , , . , $rules , . beforeSave(), ( false). , Hash beforeSave(), . updateUniques() ' Save()' Save, , .
tl; dr Ardent / .
:
class User extends Ardent implements UserInterface, RemindableInterface {
use UserTrait, RemindableTrait;
public $autoHydrateEntityFromInput = true;
public $forceEntityHydrationFromInput = true;
public $autoPurgeRedundantAttributes = true;
public static $passwordAttributes = array('password');
public $autoHashPasswordAttributes = true;
protected $table = 'users';
protected $guarded = array('id','created_at','updated_at');
protected $hidden = array('password');
protected $fillable = array('first_name','last_name','employee_id','position','email','password');
public static $rules = array(
'first_name' => 'required',
'last_name' => 'required',
'employee_id' => 'required|max:10',
'position' => 'required',
'email' => 'required|email|unique',
'password' => 'required|alpha_num|min:6',
);
:
public function update($id)
{
$user = User::find($id);
if(!Input::has('password')){
$user::$rules['password'] = '';
$user->autoHashPasswordAttributes = false;
}
if($user->updateUniques(
array(),
array(),
array(),
function($user){
if(empty($user->password)){
unset($user->password);
return true;
}
})
){
Alert::success('User Updated')->flash();
return Redirect::route('admin.users.index');
}
Alert::add('form','true')->flash();
return Redirect::back()
->withInput(Input::except('password'))
->withErrors($user->errors());
}