更新用户配置文件 Laravel 5.6

Posted

技术标签:

【中文标题】更新用户配置文件 Laravel 5.6【英文标题】:Update User Profile Laravel 5.6 【发布时间】:2018-09-11 01:52:32 【问题描述】:

您好,我刚开始使用 Laravel,正在尝试更新用户个人资料: 我的路线:

Route::patch('users/user/update',  ['as' => 'users.update', 'uses' => 'UserController@update']);

我的观点:

<form method="post" action="route('users.update', $user)">

     csrf_field() 
     method_field('patch') 

    <input type="text" name="name"  value=" $user->name " />
    <input type="email" name="email"  value=" $user->email " />


    <input type="password" name="password" />

    <input type="password" name="password_confirmation" />

    <button type="submit">Send</button>
</form>

以及我在 UserController 中的更新功能:

public function update(User $user)
     

        $this->validate(request(), [
            'name' => 'required',
            'email' => 'required|email|unique:users',
        ]);

        $user->name = Request::input('name');
        $user->email = Request::input('email');

        $user->save();
        Flash::message('Your account has been updated!');
        return back();
    

我没有收到任何错误,但我的用户配置文件没有更新。有人可以帮我吗?

【问题讨论】:

首先尝试在操作中添加一些 dd() 以查看发生了什么 - 转储请求数据和用户以查看您是否获得正确的数据。 @Bostjan 我刚刚在控制器中执行了 dd($user) 并返回 code #original: array:10 among others dd(Request::all()) 看看提交的值是否正常? @Bostjan 我认为错误在` $this->validate(request(), [ ` @Bostjan 非静态方法 Illuminate\Http\Request::all() 不应该被静态调用...如果我在 $this 之后调用它...它没有错误也没有输出 【参考方案1】:

我认为字段未更新是因为验证失败。如果您检查您的表格,您有四 (4) 个名称为“电子邮件”的字段。这样它就无法通过电子邮件验证器。

您可以尝试在刀片文件中显示错误:https://laravel.com/docs/5.6/validation#quick-displaying-the-validation-errors

我建议将请求作为方法参数注入。像这样;

public function update(User $user, Request $request)
 
    $data = $request->validate([
        'name' => 'required',
        'email' => 'required|email|unique:users',
    ]);

    $user->fill($data);
    $user->save();
    Flash::message('Your account has been updated!');
    return back();

【讨论】:

电子邮件必须是有效的电子邮件地址。P.S 电子邮件是有效的电子邮件地址 您的表单修复了吗?您有 4 个电子邮件字段 谢谢,似乎错误是电子邮件字段

以上是关于更新用户配置文件 Laravel 5.6的主要内容,如果未能解决你的问题,请参考以下文章

Laravel:通过发布第三方包来更新 .env 文件

Laravel 配置文件更新错误

更新中间表Laravel关系

如何在 laravel 的配置文件工厂中提供唯一的 user_id

laravel session redis 设置

laravel 5.6 Nginx 配置