3
respostas

[Dúvida] Missing required parameter for [Route: pessoasjuridicas.update] [URI: pessoasjuridicas/{pessoasjuridica}] [Missing parameter: pessoasjuridica].

Olá, estou com dificuldades, ao clicar no botão de edição, a mensagem Missing required parameter for [Route: pessoasjuridicas.update] [URI: pessoasjuridicas/{pessoasjuridica}] [Missing parameter: pessoasjuridica]. é retornada.

edit.blade.php:

<x-layout title="Editar Cliente: {{ $pessoajuridica->name }}">
    <x-pessoasjuridicas.pessoaJuridicaForm :action="route('pessoasjuridicas.update', $pessoajuridica->id)"
    :name="$pessoajuridica->name"
    :cnpj="$pessoajuridica->cnpj"
    :email="$pessoajuridica->email"
    :company_phone="$pessoajuridica->company_phone"
    :address="$pessoajuridica->address"
    :complement="$pessoajuridica->complement"
    :number="$pessoajuridica->number"
    :neighborhood="$pessoajuridica->neighborhood"
    :zipCode="$pessoajuridica->zipCode"
    :city="$pessoajuridica->city"
    :state="$pessoajuridica->state"/>
</x-layout>

PessoaJuridicaController.php:

    public function edit(PessoaJuridica $pessoajuridica) {
        return view('pessoasjuridicas.edit')->with('pessoajuridica', $pessoajuridica);
    }

    public function update(PessoaJuridica $pessoajuridica, Request $request) {

        $pessoajuridica->update($request->all());


        return to_route('pessoasjuridicas.index')
            ->with('mensagem.sucesso', "Cliente {$pessoajuridica->name} atualizado com sucesso!");
    }

web.php:

Route::resource('/pessoasjuridicas', PessoaJuridicaController::class)->except(['show']);

index.blade.php:

<a href="{{ route('pessoasjuridicas.edit', $pessoajuridica) }}" class="btn btn-primary btn-sm">Editar</a>
3 respostas

Olá, Andressa! Tudo bem?

Pelo que pude perceber, você está tentando passar o ID da PessoaJuridica para a rota pessoasjuridicas.update, mas o Laravel está esperando o objeto completo, não apenas o ID. Isso acontece porque você está usando a injeção de modelo (Model Binding) no seu método update do PessoaJuridicaController.

Então, ao invés de passar $pessoajuridica->id, você deveria passar apenas $pessoajuridica, como no exemplo abaixo:

<x-pessoasjuridicas.pessoaJuridicaForm :action="route('pessoasjuridicas.update', $pessoajuridica)"

Isso ocorre porque, quando você define um parâmetro de rota com o mesmo nome da variável que representa a instância do modelo (neste caso, PessoaJuridica $pessoajuridica), o Laravel automaticamente tenta encontrar a instância do modelo que corresponde ao valor daquele parâmetro.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Não funcionou, continua com o mesmo erro.

Boa tarde, Andressa!

Sendo assim irei precisar de mais contexto e informações para poder lhe dar uma resposta mais assertiva, é possível que alguma inconsistência em outro trecho do seu projeto esteja causando esse problema.

Com base nisso, peço que compartilhe todo o seu projeto comigo, via GitHub ou Drive do Google, pois assim conseguirei realizar testes buscando o que está causando essa situação.

Fico no aguardo e à disposição