我遇到以下问题:
路由 store-cliente 不支持 GET 方法。支持的方法:POST。
我正在使用 laravel 10。
我已经清理了缓存、路由,甚至重新启动了系统。
显然我不认为我的错误是简单和愚蠢的。
我的路线显然是正确的,我的表单显然调用了正确的方法,我的控制器也是正确的,但它指出了我传递了错误方法的错误。
任何人都可以帮助我解决这个持续存在的错误吗?
路线:
Route::get('/index-cliente', [ClienteController::class, 'index'])->name('cliente.index');
Route::get('/create-cliente', [ClienteController::class, 'create'])->name('cliente.create');
Route::post('/store-cliente', [ClienteController::class, 'store'])->name('cliente.store');
Route::get('/show-cliente/{cliente}', [ClienteController::class, 'show'])->name('cliente.show');
Route::get('/edit-cliente/{cliente}', [ClienteController::class, 'edit'])->name('cliente.edit');
Route::put('/update-cliente/{cliente}', [ClienteController::class, 'update'])->name('cliente.update');
Route::delete('/destroy-cliente/{cliente}', [ClienteController::class, 'destroy'])->name('cliente.destroy');
查看:
<form action="{{ route('cliente.store') }}" method="POST" class="row g-3">
@csrf
<div class="card mt-4 mb-4 border-light shadow">
<div class="card-header d-flex justify-content-center">
<span>DADOS DO TUTOR</span>
</div>
</div>
<div class="col-md-6 col-sm-6">
<label for="nomeresponsavel1" class="form-label">Nome</label>
<input type="text" name="nomeresponsavel1" class="form-control" id="nomeresponsavel1"
placeholder="Nome Cliente"
value="{{ old('nomeresponsavel1') }}">
</div>
<center>
<div class="col-12">
<button type="submit" class="btn btn-success btn-sm">Cadastrar</button>
</div>
</center>
</form>
控制器:
public function store(ClienteRequest $request)
{
//dd($request);
// Validar o formulário
$request->validated();
try {
// Cadastrar no banco de dados na tabela contas os valores de todos os campos
$cliente = Cliente::create([
'nomeresponsavel1' => $request->nomeresponsavel1,
'nomeresponsavel2' => $request->nomeresponsavel2,
'endereco' => $request->endereco,
'complemento' => $request->complemento,
'telefone' => $request->telefone,
'telefone1' => $request->telefone1,
'nomepet' => $request->nomepet,
'cliente_pacote' => $request->cliente_pacote,
'raca' => $request->raca,
'porte' => $request->porte,
'datanascimento' => $request->datanascimento,
'observacao' => $request->observacao,
'alergia' => $request->alergia,
]);
//dd($request);
// Redirecionar o usuario, enviar a mensagem de sucesso
return redirect()->route('cliente.show', ['cliente' => $cliente->id])->with('success', 'Cliente cadastrada com sucesso');
} catch (Exception $e) {
// Salvar log
Log::warning('Cliente não cadastrada', ['error' => $e->getMessage()]);
// Redirecionar o usuario, enviar a mensagem de erro
return back()->withInput()->with('error', 'Cliente não cadastrada!');
}
}
我遇到以下问题:
路由 store-cliente 不支持 GET 方法。支持的方法:POST。
我正在使用 laravel 10。
我已经清理了缓存、路由,甚至重新启动了系统。
显然我不认为我的错误是简单和愚蠢的。
我的路线显然是正确的,我的表单显然调用了正确的方法,我的控制器也是正确的,但它指出了我传递了错误方法的错误。
任何人都可以帮助我解决这个持续存在的错误吗?
Laravel 使用资源路由,它们动态搜索,您不必为索引、创建、存储、编辑和更新创建不同的路由。
解决方案1 从此改变你的路线
{{ route('cliente.store') }}
到
{{ route('cliente.save') }}
更改路线从
Route::post('/store-cliente', [ClienteController::class, 'store'])->name('cliente.store');
到
Route::post('/store-cliente', [ClienteController::class, 'store'])->name('cliente.save');
解决方案2: 路线应该是这样的
Route::resource('client','ClienteController');
控制器在所有功能内都有代码,请勿更改这些功能
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class ClientController extends Controller
{
function __construct()
{
//
}
public function index()
{
//
}
public function create()
{
//
}
public function store(Request $request)
{
//
}
public function show(SlidingModule $sliding_module)
{
//
}
public function edit(SlidingModule $sliding_module)
{
//
}
public function update(Request $request, $id)
{
//
}
public function destroy(SlidingModule $sliding_module)
{
//
}
}
这是控制器代码示例。不要创建不同的路线。
在您的视图中使用它来更改或呼叫路线
{{route('client.index')}}
{{route('client.create')}}
{{route('client.store')}}
{{route('client.edit')}}
{{route('client.update')}}
{{route('client.delete')}}