当前位置: 首页 > 知识库问答 >
问题:

修补程序更新Laravel中经过身份验证的用户

公孙宗清
2023-03-14

我正在尝试将配置文件信息编辑/更新到我的用户表中。

我的想法是让经过身份验证的用户能够在用户表中编辑自己的配置文件。

在注册过程中,您只需要填写几个特定的项目(用户名、姓名、姓氏、电子邮件、密码),但我还向用户表中添加了几个额外的列(城市、国家、电话、twitter、facebook)。

我有一个profile用户页面(route='/profile'),其中显示了所有信息。当然,注册过程中不需要填写的所有列都不会填写:

我也有一个编辑页面,需要添加信息的列是可编辑的:

以下是此editprofile的代码。刀身php(我尝试发送一个补丁方法):

...

{!! Form::model($user, ['route' => 'user/' . $user , 'method' => 'PATCH']) !!}
    <div class="form-group form-horizontal">
        <div class="form-group">
                {!! Form::label('username', 'Username:', ['class' => 'col-md-4 control-label']) !!}
            <div class="col-md-6">
                <label class="align-left">{{ $user->username}}<label>       
            </div>  
        </div>

        <div class="form-group">
                {!! Form::label('email', 'E-mail:', ['class' => 'col-md-4 control-label']) !!}
            <div class="col-md-6">
                <label class="align-left">{{ $user->email}}<label>  
            </div>  
        </div>

        <div class="form-group">
                {!! Form::label('name', 'Name:', ['class' => 'col-md-4 control-label']) !!}
            <div class="col-md-6">
                <label class="align-left">{{ $user->name}} {{ $user->lastname}}<p>  
            </div>  
        </div>

        <br />

        <div class="form-group">
                {!! Form::label('city', 'City:', ['class' => 'col-md-4 control-label']) !!}
            <div class="col-md-6">
                {!! Form::Text('city', null, ['class' => 'form-control']) !!}
            </div>  
        </div>

        <div class="form-group">
                {!! Form::label('country', 'Country:', ['class' => 'col-md-4 control-label']) !!}
            <div class="col-md-6">
                {!! Form::Text('country', null, ['class' => 'form-control']) !!}
            </div>  
        </div>

        <div class="form-group">
                {!! Form::label('phone', 'Phone:', ['class' => 'col-md-4 control-label']) !!}
            <div class="col-md-6">
                {!! Form::Text('phone', null, ['class' => 'form-control']) !!}
            </div>  
        </div>

        <div class="form-group">
                {!! Form::label('twitter', 'Twitter link:', ['class' => 'col-md-4 control-label']) !!}
            <div class="col-md-6">
                {!! Form::Text('twitter', null, ['class' => 'form-control']) !!}
            </div>  
        </div>

        <div class="form-group">
                {!! Form::label('facebook', 'Facebook link:', ['class' => 'col-md-4 control-label']) !!}
            <div class="col-md-6">
                {!! Form::Text('facebook', null, ['class' => 'form-control']) !!}
            </div>  
        </div>

        <div class="form-group">
            <div class="col-md-6 col-md-offset-4">
                {!! Form::submit('Save Profile', ['class' =>  'btn btn-primary']) !!}
            </div>
        </div> 

        </div>  
    </div>
{!! Form::close() !!}
...

我有这是我的http//routes.php

# Profile
Route::get('/profile', 'PagesController@profile');
Route::get('/profile/edit', 'ProfileController@edit');


Route::bind('user', function($id) {
$user = App\User::find($id)->first();
});
Route::patch('user/{user}', 'ProfileController@update');

我有一个Http/请求/UpdateUserRequest.php来验证请求:

<?php namespace App\Http\Requests;

use App\Http\Requests\Request;
use Illuminate\Foundation\Http\FormRequest;

class UpdateUserRequest extends Request {

    public function authorize()
  {
    return false;
  }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'city' => 'max:30',
            'country' => 'max:30',
            'phone' => 'max:30',
            'twitter' => 'max:30',
            'facebook' => 'max:30'
        ];
    }

}

和我的Http/Controllers/ProfileController。具有更新功能的php:

<?php namespace App\Http\Controllers;

use Auth;

use App\Http\Requests;
use App\Http\Controllers\Controller;

use Illuminate\Http\Request;

class ProfileController extends Controller {

    public function edit() 
    {
        $user = Auth::user();

        return view('pages.editprofile')->withUser($user);
    }

    public function update(UpdateUserRequest $request, User $user) 
    {
        $user->fill($request->all());
        $user->save();
        return redirect()->view('pages.editprofile')->withUser($user);
    }


}

目前看来,我甚至无法打开我的“编辑档案”。刀身php页面,除非我删除“路由”

有谁能指导我如何准确地触发补丁方法吗?

共有2个答案

哈朗
2023-03-14

您需要更改:

{!! Form::model($user, ['route' => 'user/' . $user , 'method' => 'PATCH']) !!}

进入:

{!! Form::model($user, ['route' => 'user/' . $user->id , 'method' => 'PATCH']) !!}

当您在表单中使用转换为Json的User对象创建URL时,这就是为什么它不起作用。

朱兴运
2023-03-14

将表单开始标记更改为

{!! Form::model($user, ['route' => 'user/' . $user->id , 'method' => 'PATCH']) !!}

你忘了-

更新

改变你的路线从

Route::patch('user/{user}', 'ProfileController@update');

Route::patch('user/{user}', 'as' => 'profile.patch', 'ProfileController@update');

和您的表单打开标签

{!! Form::model($user, ['route' => array('profile.patch', $user->id), 'method' => 'PATCH']) !!}
 类似资料:
  • 我的代码在这里:代码重新发布是因为我想问一个更直接的问题。如何在未经身份验证的用户和经过身份验证的用户之间切换?我的未经验证的文件似乎已缓存,我使用了以下方法: 在我剩下的api代码之前,它仍然不能工作。谢谢你的帮助 注意:我知道它不起作用,因为我在切换配置/凭据提供程序后立即使用lambda进行调用,并且只有授权用户才能调用此方法。 编辑@behrooziAWS答案: API代码: 完整错误:B

  • 最近我开始使用Laravel5.3来写博客,但是在运行

  • 问题内容: 我想使用cURL测试一些API。我尝试执行GET,如下所示: 在服务器上,它显示为“ 302”(表示重定向,对吧?)。我猜它重定向到“登录/”页面。 完成这项工作的正确方法是什么? 编辑:我试过: 其中login_form.txt包含“ username = username&password = password&this_is_the_login_form = 1”。不起作用 没有

  • 我是新的(护照)在laravel。是否有可能使用 即使使用了laravel内置身份验证?

  • 我有一个LaravelAPI(实际上是LumenAPI)服务于VueJS前端。Vue应用程序允许用户登录到谷歌。然后将Google令牌发送回Lumen API,后者使用Google验证令牌,然后验证电子邮件地址是否为有效用户。然后它生成一个令牌,与用户一起存储在数据库中,并返回用户对象。 我没有使用Passport或jwt auth之类的东西。那么现在,我如何使用默认的Auth中间件来验证(现在已

  • 本文向大家介绍asp.net mvc中Forms身份验证身份验证流程,包括了asp.net mvc中Forms身份验证身份验证流程的使用技巧和注意事项,需要的朋友参考一下 验证流程 一、用户登录 1、验证表单:ModelState.IsValid 2、验证用户名和密码:通过查询数据库验证 3、如果用户名和密码正确,则在客户端保存Cookie以保存用户登录状态:SetAuthCookie     1