无法获取和更新Laravel中的数据库列(使用资源控制器和集合表单)

以下是我要执行的操作的上下文:我正在尝试创建一个配置文件系统,用户在该系统中注册并重定向到显示页面,该页面上的所有用户信息(例如他的姓名,电子邮件等)都位于打算显示。由于注册表单仅包含2个字段(名称/电子邮件)-用户必须更新其其他信息,例如性别/ facebook ID / Twitter ID等。因此,我有一个“编辑”按钮,可将用户带到表单。现在在该表单上,我希望显示他已经存在的“名称/电子邮件”,而其他字段(如“性别” /“ FB” /“推特” /“描述”)为空-一旦他填写了这些字段并按“更新”,我希望他返回“显示”页面,然后显示所有此更新/新信息,即性别/名称/电子邮件/ Twitter /描述。以下是到目前为止的代码:

ProfileController.php (资源控制器):

    <?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\CustomUser;


class ProfileController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $customusers = CustomUser::get()->first();
        return view ('display',compact('customusers'));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit(CustomUser $customuser) 
    {
        return view ('edit',compact('customuser'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request,CustomUser $customuser)
    {
        $customuser->update($request->all());
        return redirect()->route('display.index')->with('creation','Profile has been updated successfully!');
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }
}

CustomUser.php (模型):

   <?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;

class CustomUser extends Authenticatable
{
    use Notifiable;

    protected $table = 'customusers';

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name','username','email','gender','password','message','twitter','facebook',];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password','remember_token',];
}

Display.blade.php (主页):

@extends('layouts.app')

@section('content')

<div style="margin-top: 5.2%;" class="container">
    <div class="row">
        <div class="col-lg-12">
            @if (Session::has('creation'))
            <div class="alert alert-info">
                {{ Session::get('creation') }}
            </div> 
            @endif
             {{ link_to_route('display.edit','Edit',[$customusers->id],['class'=>'btn btn-success']) }}

             {{$customusers->name}}
             {{$customusers->email}}
             {{$customusers->message}}
             {{$customusers->facebook}}
             {{$customusers->twitter}}
        </div>
    </div>
</div>

@endsection

最后,这是我的 Edit.blade.php

@extends('layouts.app')

@section('content')
<body style="height: 105.6vh;">
<div class="container">
    <div class="row">
        <div class="col-lg-12">
            <div class="card">
                <div class="card-header" style="color: #fff; background-color: #113;font-family: 'Nunito',sans-serif; text-transform: uppercase;letter-spacing: 2px;
                font-weight: bold;">
                    Edit Profile
            </div>
                <div class="card-body">
                        {!! Form::model($customuser,array('route'=>['display.update',$customuser->id],'method'=>'PUT')) !!}
                    <div class="form-group">
                        {!! Form::text('name',null,['class'=>'form-control','placeholder'=>'username']) !!}
                    </div>
                    <div class="form-group">
                            {!! Form::email('email','placeholder'=>'Email']) !!}
                    </div>
                    <div class="form-group form-row">
                            <div class="col-5">
                                    {!! Form::select('gender',['Male' => 'Male','Female' => 'Female'],'placeholder'=>'Choose Gender']); !!}
                            </div>
                            <div class="col">
                                    {!! Form::text('facebook','placeholder'=>'Facebook ID']) !!}
                            </div>
                            <div class="col">
                                    {!! Form::text('twitter','placeholder'=>'Twitter Handle']) !!}
                            </div>
                    </div>
                    <div class="form-group">
                            {!! Form::textarea('message','placeholder'=>'Talk about yourself']) !!}
                    </div>
                    <div class="form-group">
                            {!! Form::button('Edit',['type'=>'submit','class'=>'btn btn-danger col-lg-12']) !!}
                    </div>
                    {!! Form::close() !!}
                </div>
            </div>
        </div>
    </div>
</div>
</body>
@endsection

现在,当我单击“编辑”并转到Edit.blade.php时,所有字段均为空白,当其中两个字段(名称/电子邮件)应预先填充用户凭据的空白时,但这不是“在这种情况下-它们为空。然后,当我填写所有字段并按“更新”时,它会显示“ 此路由不支持PUT方法。我在这里做错了什么?我已经在Internet上纠缠了2多年了”个小时,我在这里找不到我在做错什么。让我知道您需要进一步的信息来解决我的问题。

xin34140 回答:无法获取和更新Laravel中的数据库列(使用资源控制器和集合表单)

您正在从display.blade.php传递客户ID以更新ProfileController中的功能,并且正在检索不应该存在的Customer对象,并且您在编辑功能中也做了同样的操作。

但是,您的编辑和更新功能应如下所示:

    /**
 * Show the form for editing the specified resource.
 *
 * @param int $id
 * @return \Illuminate\Http\Response
 */
public function edit(CustomUser $id)
{
    $customuser = CustomUser::whereId($id)->first();
    return view ('profile.edit',compact('customuser'));
}

/**
 * Update the specified resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function update(Request $request,$id)
{
    $customuser = CustomUser::whereId($id)->first();
    $customuser->update($request->all());
    return redirect()->route('display.index')->with('creation','Profile has been updated successfully!');
}
本文链接:https://www.f2er.com/3149935.html

大家都在问