更新Laravel 5.2时,数据库中的数据未更新


Data is not updating in database on update Laravel 5.2

我只是在应用程序中实现了CRUD,但UPDATE没有更新数据库I var_dump($user->name)中的数据,但它什么也不输出。请看一下代码,帮我一下。我正在使用Laravel 5.2和资源控制器。

PS:编辑工作得很好,例如在这个URL http://localhost/pos/users/6/edit?id=6上,我可以用所需的数据填充视图字段,但当我点击"更新"时,数据库中没有任何更新。

用户控制器:

  public function edit($id)
        {
            $user = User::find($id);
            return view('user.update')->with('userToUpdate',$user);
        }
        /**
         * Update the specified resource in storage.
         *
         * @param  'Illuminate'Http'Request  $request
         * @param  int  $id
         * @return 'Illuminate'Http'Response
         */
        public function update(Request $request, $id)
        {
            $user = User::find($id);
            $user->name = Input::get('name');
            $user->email = Input::get('email');
            $user->password = bcrypt(Input::get('password'));
            $user->save();      
            return Redirect::to('/users')->with('message', 'User Updated');
        }

更新视图:

@extends('layouts.app')
@section('content')
<div class="container">
    <div class="row">
        <div class="col-md-8 col-md-offset-2">
            <div class="panel panel-default">
                <div class="panel-heading">Update</div>
                <div class="panel-body">
                    <form class="form-horizontal" role="form" method="PUT" action="{{ url('/users') }}">
                        {!! csrf_field() !!}
                        <div class="form-group{{ $errors->has('name') ? ' has-error' : '' }}">
                            <label class="col-md-4 control-label">Name</label>
                            <div class="col-md-6">
                                <input type="text" class="form-control" name="name" value="{!! $userToUpdate->name !!}">
                            </div>
                        </div>
                        <div class="form-group{{ $errors->has('email') ? ' has-error' : '' }}">
                            <label class="col-md-4 control-label">E-Mail Address</label>
                            <div class="col-md-6">
                                <input type="email" class="form-control" name="email" value="{!! $userToUpdate->email !!}">
                            </div>
                        </div>
                        <div class="form-group{{ $errors->has('password') ? ' has-error' : '' }}">
                            <label class="col-md-4 control-label">Password</label>
                            <div class="col-md-6">
                                <input type="password" class="form-control" name="password" value="{!! $userToUpdate->password !!}">
                            </div>
                        </div>

                        <div class="form-group">
                            <div class="col-md-6 col-md-offset-4">
                                <button type="submit" class="btn btn-primary">
                                    <i class="fa fa-btn fa-user"></i>Update
                                </button>
                            </div>
                    </div>
                </form>
            </div>
        </div>
    </div>
</div>

用户模型:

<?php
namespace App;
use Illuminate'Foundation'Auth'User as Authenticatable;
class User extends Authenticatable
{
    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'email', 'password',
    ];
    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];
}

路线:

Route::group(['middleware' => 'web'], function () {
    Route::get('/', function () {
        return view('welcome');
    });
    Route::auth();
    Route::get('/home', 'HomeController@index');
    Route::get('/register', function(){
        return view('auth.register');
    })->middleware('isAdmin');
    Route::resource('/users', 'UsersController');
});

来自laravel文档:

https://laravel.com/docs/5.0/routing#method-欺骗

HTML表单不支持PUT、PATCH或DELETE操作。因此,当定义从HTML表单调用的PUT、PATCH或DELETE路由时,您需要在表单中添加一个隐藏的_method字段。

但是,Route::资源指定更新需要使用PUT方法。因此,您的表格需要是:

<form class="form-horizontal" role="form" method="POST" action="{{ url('/users', $userToUpdate->id) }}">
     {!! csrf_field() !!}
     <input type="hidden" name="_method" value="PUT">

是因为您在发送表单时没有传递用户id吗?尝试将表单操作从{{ url('/users') }}编辑为{{ url('/users', $userToUpdate->id) }}