路由存储客户端不支持 GET 方法。支持的方法:POST

问题描述 投票:0回答:1

我遇到以下问题:

路由 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 forms routes get put
1个回答
0
投票

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')}}
© www.soinside.com 2019 - 2024. All rights reserved.