我正在尝试了解 PHP Laravel,但不知道如何进行此 put 操作。 基本上我的数据库是用 artisan 创建的,车辆表很简单。
Schema::create('vehiculos', function (Blueprint $table) {
$table->string('id')->foreign('idFk')->references('id')->on('clientes')->onDelete('cascade');
$table->string('marca');
$table->string('modelo');
$table->year('anio');
$table->string('matricula')->primary();
$table->timestamps();
});
我只是希望能够更改车辆数据,当然不能更改 id 或 matricula(车牌),除了使用 PUT 操作之外一切顺利。给我这个错误:路线 vehiculos/7676729/edit 不支持 PUT 方法。支持的方法:GET、HEAD。
令我困惑的是,我在另一个类(即客户端)中做同样的事情,我在其中更新它并像魅力一样工作,但这里却没有。
这是我的 VehiculoController.php
public function update(Request $request, Vehiculo $vehiculo) {
// Define las reglas de validación
$request->validate([
'matricula' => 'required|unique:vehiculos' . $vehiculo->matricula,
'id' => 'required' . $vehiculo->id,
'marca' => 'required',
'modelo' => 'required',
'anio' => 'required',
]);
$vehiculo->update($request->all());
return redirect()->route('vehiculos.listar')->with('success', 'Vehiculo
actualizado con éxito.');
}
我的 web.php
Route::get('/', function () {
return view('welcome');
});
Route::get('/clientes', [ClienteController::class, 'index'])->name('clientes.index');
Route::resource('clientes', ClienteController::class)
->names([
'index' => 'clientes.listar',
'create' => 'clientes.crear',
'store' => 'clientes.guardar',
'show' => 'clientes.ver',
'edit' => 'clientes.editar',
'update' => 'clientes.actualizar',
'destroy' => 'clientes.eliminar',
]);
Route::resource('vehiculos', VehiculoController::class)
->names([
'index' => 'vehiculos.listar',
'create' => 'vehiculos.crear',
'store' => 'vehiculos.guardar',
'show' => 'vehiculos.ver',
'edit' => 'vehiculos.editar',
'update' => 'vehiculos.actualizar',
'destroy' => 'vehiculos.eliminar',
]);
我的edit.blade.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Editar vehiculos</title>
</head>
<body>
<h1>Modificar vehiculo</h1>
@if (session('success'))
<div>{{session('success')}}</div>
@endif
<form action="{{route('vehiculos.editar', $vehiculo->matricula)}}" method="POST">
@csrf
@method("PUT")
<label for="matricula" >matricula:</label>
<input type="text" name="matricula" value="{{$vehiculo->matricula}}" readonly>
<label for="id">id:</label>
<input type="text" name="id" value="{{$vehiculo->id}}" readonly>
<label for="marca">marca:</label>
<input type="text" name="marca" value="{{$vehiculo->marca}}">
<label for="modelo">modelo:</label>
<input type="text" name="modelo" value="{{$vehiculo->modelo}}">
<label for="anio">anio:</label>
<input type="text" name="anio" value="{{$vehiculo->anio}}">
<button type="submit">ENVIAR</button>
@if ($errors->all())
@foreach ($errors->all() as $error)
<ul>
<li>{{$error}}</li>
</ul>
@endforeach
@endif
</form>
</body>
还有我的index.blade.php
<h1>Lista de vehiculos</h1>
@if(session('success'))
<div style="color: green;">
{{ session('success') }}
</div>
@endif
<a href="{{ route('vehiculos.crear') }}">Crear Nuevo vehiculo</a>
<ul>
@foreach ($vehiculos as $vehiculo)
<li>{{ $vehiculo->marca }} - {{ $vehiculo->modelo }}
<a href="{{ route('vehiculos.ver', $vehiculo -> id) }}">Ver</a>
<a href="{{ route('vehiculos.editar', $vehiculo -> id) }}">Editar</a>
<form action="{{ route('vehiculos.eliminar', $vehiculo -> id) }}" method="POST">
@csrf
@method('DELETE')
<button type="submit">Eliminar</button>
</form>
</li>
@endforeach
</ul>
当我启动工匠路线时,我的路线也可用于车辆:列表
GET|HEAD vehiculos ................................................................ vehiculos.listar › VehiculoController@index
POST vehiculos ............................................................... vehiculos.guardar › VehiculoController@store
GET|HEAD vehiculos/create ......................................................... vehiculos.crear › VehiculoController@create
GET|HEAD vehiculos/{vehiculo} ......................................................... vehiculos.ver › VehiculoController@show
PUT|PATCH vehiculos/{vehiculo} ................................................ vehiculos.actualizar › VehiculoController@update
DELETE vehiculos/{vehiculo} ................................................. vehiculos.eliminar › VehiculoController@destroy
GET|HEAD vehiculos/{vehiculo}/edit ................................................. vehiculos.editar › VehiculoController@edit
发出 PUT 请求并更改数据,例如车辆的年份或型号,并在数据库中看到它的变化,但每当我尝试或将 PUT 更改为 PATCH 时都会出现相同的错误。
编辑:还将该行中的方法更改为 PUT 会得到相同的结果,但没有错误,它只是什么也不做
矩阵)}}“方法=“POST”>改变
<form action="{{route('vehiculos.editar', $vehiculo->matricula)}}"
到
<form action="{{route('vehiculos.actualizar', $vehiculo->matricula)}}"