php – LaravelArdent 用户模型编辑保存

php – LaravelArdent 用户模型编辑保存,第1张

概述在laravel / ardent中用密码编辑用户模型的预期方法是什么?我的问题是,在正确验证用户输入之前,我不想从db加载实际的用户模型.当我将密码字段留空时验证显然失败,因为需要密码.这是我目前的编辑后动作: public function postEdit($id){ // ardent autohydrates this model $newUser = new User 在laravel / ardent中用密码编辑用户模型的预期方法是什么?我的问题是,在正确验证用户输入之前,我不想从db加载实际的用户模型.当我将密码字段留空时验证显然失败,因为需要密码.这是我目前的编辑后动作:

public function postEdit($ID){    // ardent autohydrates this model    $newUser = new User;    // valIDation fails    if(!$newUser->valIDate())        return Redirect::action('UsersController@getEdit',$ID)            ->with('error',Lang::get('Bitte Eingabe überprüfen'))            ->withErrors($newUser->errors())            ->withinput(input::except('password'));    // load model from db    $exUser = User::find($ID);    if(!$exUser->exists)        return Response::make('No such user',500);    // save model,ardent autohydrates again?    if($exUser->save())        return Redirect::action('UsersController@getShow',$ID)            ->with('success',Lang::get('Änderungen gespeichert'));    else        return Redirect::action('UsersController@getEdit',Lang::get('Bitte Eingabe überprüfen'))            ->withErrors($newUser->errors())            ->withinput(input::except('password'));}

这似乎是一个非常多的代码(它不工作),我无法找到这种情况的例子

解决方法 好的,我自己解决了,因为这不是一个非常活跃的话题.

问题是结合了ardents自动水合功能和保留旧密码的独特要求,如果没有给出新密码.因为在valIDate()和save()上进行了自动水合,所以也无法阻止自动水合空密码.首先,我尝试更改input数组并使用旧密码覆盖它,但之后我只是关闭了用户模型的自动水合:

class User extends Ardent implements UserInterface,RemindableInterface {    public $forceEntityHydrationFrominput = false;    public $autoHydrateEntityFrominput = false;

这是POST上的编辑 *** 作:

public function postEdit($ID){    // manually insert the input    $user = new User(input::all());    // valIDate the user with special rules (password not required)    if($user->valIDate(User::$updateRules)) {        // get user from database and fill with input except password        $user = User::find($ID);        $user->fill(input::except('password'));        // fill in password if it is not empty        // will flag the pw as dirty,which will trigger rehashing on save()        if(!empty(input::get('password')))            $user->password = input::get('password');        if($user->save())            return Redirect::action('UsersController@getIndex')                ->with('success',Lang::get('Änderungen gespeichert'));    }    return Redirect::action('UsersController@getEdit',$ID)        ->with('error',Lang::get('Bitte Eingaben überprüfen'))        ->withErrors($user->errors())        ->withinput(input::except('password'));}
总结

以上是内存溢出为你收集整理的php – Laravel / Ardent /用户模型编辑保存全部内容,希望文章能够帮你解决php – Laravel / Ardent /用户模型编辑保存所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1254108.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存