1
resposta

Erro ao preencher o form com dados carregados do Banco na rota EDIT

Olá,

Estou tentando aplicar o que aprendi no curso criando um cadastro de empresas, mas estou com dificuldades quando preciso carregar os dados da empresa no form da rota edit.

Vejam abaixo o meu código:

OperadorasController

public function edit(Operadora $operadora, Request $request)
    {
        return view('operadoras.edit')
            ->with('operadora', $operadora);
    }

EDIT.BLADE.PHP

<x-layout title="Operadora > Editar Operadora '{{$operadora->razao_social}}' ">

        <x-operadoras.form
            :action="route('operadoras.update', $operadora->id)"
            :cnpj="$operadora->cnpj"
            :razao_social="$operadora->razao_social"
            :nome_fantasia="$operadora->nome_fantasia"
        />

FORM


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

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

        <div class="mb-3">
            <label class="form-label" for="razao_social">Razão Social:</label>
            <input class="form-control"
                   type="text"
                   id="razao_social"
                   name="razao_social"
                   @isset($razao_social) value="{{ $razao_social }}" @endisset>
        </div>

        <div class="mb-3">
            <label class="form-label" for="nome_fantasia">Nome Fantasia:</label>
            <input class="form-control"
                   type="text"
                   id="nome_fantasia"
                   name="nome_fantasia"
                   @isset($nome_fantasia) value="{{ $nome_fantasia }}" @endisset>
        </div>

        <div class="mb-3">
            <label class="form-label" for="cnpj">CNPJ:</label>
            <input class="form-control"
                   type="text"
                   id="cnpj"
                   name="cnpj"
                   @isset($cnpj) value="{{ $cnpj }}" @endisset>
        </div>

        <button type="submit" class="btn btn-warning">Adicionar</button>
    </form>

web.php

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

O input de CNPJ é carregado normalmente, mas os inputs razao_social e nome_fantasia não carregam valores. Não consigo entender porque, se utilizei a mesma sintaxe para todos eles. Acredito que deve ser algo relacionado ao _ utilizado no 'name' dos inputs.

![TELA CARREGA NA ROTA 'OPERADORA/{ID}/EDIT] (https://cdn1.gnarususercontent.com.br/1/93001/3f19026a-2561-493d-975c-b8aecf24f931.png)

Procurei muito na interner mas não encontrei solução!

1 resposta

Olá, Hugo? Tudo bem?

Agradeço por aguardar um retorno =)

De fato está relacionado ao tipo Snake Case das variáveis: razao_social e nome_fantasia, que você está declarando no construtor do componente

A propria documentação do Laravel nos informa como devemos declarar as variáveis no construtor do componente:

"Os argumentos do construtor de componentes devem ser especificados usando camelCase, enquanto kebab-case devem ser usados ao fazer referência aos nomes dos argumentos em seus atributos HTML."

Você pode ler mais sobre como deve ser feito essa declaração aqui

No caso do seu exemplo, recomendo que você faça essas alterações:

edit.blade.php

<x-layout title="Operadora > Editar Operadora '{{$operadora->razao_social}}' ">

        <x-operadoras.form
            :action="route('operadoras.update', $operadora->id)"
            :cnpj="$operadora->cnpj"
            :razao-social="$operadora->razao_social"
            :nome-fantasia="$operadora->nome_fantasia"
        />

form

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

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

        <div class="mb-3">
            <label class="form-label" for="razao_social">Razão Social:</label>
            <input class="form-control"
                   type="text"
                   id="razao_social"
                   name="razao_social"
                   @isset($razaoSocial) value="{{ $razaoSocial }}" @endisset>
        </div>

        <div class="mb-3">
            <label class="form-label" for="nome_fantasia">Nome Fantasia:</label>
            <input class="form-control"
                   type="text"
                   id="nome_fantasia"
                   name="nome_fantasia"
                   @isset($nomeFantasia) value="{{ $nomeFantasia }}" @endisset>
        </div>

        <div class="mb-3">
            <label class="form-label" for="cnpj">CNPJ:</label>
            <input class="form-control"
                   type="text"
                   id="cnpj"
                   name="cnpj"
                   @isset($cnpj) value="{{ $cnpj }}" @endisset>
        </div>

        <button type="submit" class="btn btn-warning">Adicionar</button>
    </form>

Realizando essas alterações creio que irá funcionar.

Sobre os tipos de declarações de variáveis. há algumas conveções de nomenclatura, recomendo você dar uma olhada neste artigo da Alura:

Espero ter ajudado, bons estudos =)

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