1
resposta

[Bug] Problema com argumento do edit

Boa tarde, estou fazendo uma variação do sistema de séries para um sistema de chamados. Estou com problema no edit, onde estou passando o argumento id para a rota e ela me retorna erro como se estivesse sem.

Erro: Missing required parameter for [Route: chamados.update] [URI: chamados/{chamado}] [Missing parameter: chamado]. (View: C:\Users\alexandre.reisy\Documents\sistema-suporte\resources\views\chamados\edit.blade.php)

Form Component:

<form action="{{ $action }}" method="post">
    @csrf

    @isset($titulo)
        @method('PUT')
    @endisset

    <div class="mb-3">
        <label class="form-label" for="titulo">Título</label>
        <input class="form-control" type="text" id="titulo" name="titulo"
            @isset($titulo)
            value="{{ $$titulo }}"
            @endisset>
        <label class="form-label" for="descricao">Descrição</label>
        <textarea class="form-control" id="descricao" name="descricao"
            @isset($descricao)
            value="{{ $descricao }}"
            @endisset />
    </div>
    <button type="submit" class="btn btn-success">Confirmar</button>
    <a href="/chamados" class="btn btn-outline-success">Voltar</a>
</form>

Edit:

<x-layout title="Editar Chamado {{ $chamado->nome }}">
    <div class="d-flex align-items-center justify-content-between m-4">
        <h1>Editar Chamado</h1>
    </div>

    <x-chamados.form :action="route('chamados.update', $chamado->id)" />
        
</x-layout>

Rotas:

Route::get('/', function () {
    return redirect('/chamados');
});

Route::resource('chamados', ChamadosController::class)
    ->except(['show']);
1 resposta

Oi!

Esse erro ocorre porque você não está passando o parâmetro "chamado" na rota de atualização do chamado.

Para corrigir esse problema, você precisa garantir que está passando o parâmetro "chamado" corretamente na rota de atualização. No seu arquivo "Edit.blade.php", você está utilizando o componente "x-chamados.form" para renderizar o formulário de edição. Nesse componente, você está passando a rota de atualização usando a função "route" e o parâmetro "$chamado->id".

No entanto, no seu arquivo de rotas, você está utilizando o método "resource" para definir as rotas do seu controller de chamados. Esse método já cria automaticamente as rotas para as ações CRUD (create, read, update, delete) do seu controller. No caso da rota de atualização, o Laravel espera que o parâmetro seja chamado "chamado" e não "id".

Portanto, para corrigir o erro, você precisa alterar a rota de atualização no seu componente "x-chamados.form" para utilizar o parâmetro "chamado" ao invés de "id". Ficaria assim:

<x-chamados.form :action="route('chamados.update', $chamado)" />

Dessa forma, o parâmetro "chamado" será passado corretamente na rota de atualização e o erro deve ser resolvido.