我只是在我的应用程序中实现了 CRUD
,但是 UPDATE 没有更新数据库中的数据,我 var_dump($user->name)
但它什么也不输出。请查看代码并帮助我。我正在使用 Laravel 5.2 和资源 Controller 。
PS:编辑工作正常,例如在此 URL http://localhost/pos/users/6/edit?id=6
我可以用所需的数据填充 View 字段但是当我点击更新数据库中没有更新。
用户 Controller :
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');
}
更新 View :
@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-spoofing
HTML forms do not support PUT, PATCH or DELETE actions. So, when defining PUT, PATCH or DELETE routes that are called from an HTML form, you will need to add a hidden _method field to the form.
但是 Route::resource 指定更新需要使用 PUT 方法。因此,您的表单需要:
<form class="form-horizontal" role="form" method="POST" action="{{ url('/users', $userToUpdate->id) }}">
{!! csrf_field() !!}
<input type="hidden" name="_method" value="PUT">
关于php - 更新 Laravel 5.2 时数据库中的数据未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36402595/