Duvidas serias em Laravel

Explicações

Ok, ok, ok. Eu sei que estou no Stack OverFlow, MAS, não estou familiarizado com ele, tenho 18 anos estou começando no mundo da programação, esse é meu primeiro freela e tenho uma estrada grande ainda, de qualquer modo me deparei com um daqueles que chamo "codigo abençoado" que é quando enquanto não resolvido o problema parece ser simplimente magia ou algo do tipo mas depois de ser resolvido era algo bobo e patetico que faz você rir de nervoso e ficar puto internamente.

Contexto

  • Laravel 11
  • Ecommerce

Problema

Um problema super estranho no meu Laravel, como eu disse quando eu clico no botão de enviar do meu formulário ele apenas recarrega pagina e ignora todo o bloco de código que está dentro da minha action store, o que estranho por que mesmo colocando uma inserção de dados manual não acontece nada, copiando e colando o mesmo bloco de código e fazendo a mesma inserção em outra action como a create, ao recarregar a pagina, já aparece os dados no banco, e imagino que sejam as rotas só que estou chamando todas as rotas da mesma maneira e e parece que só aqui isso acontece, e estou criando a rota usando o metodo resourse que gera nomes padrões e menos difíceis de se errar, já até rolei o comando de listar rotas e esta tudo aparentemente certo e mesmo assim esse erro estranho acontece

Conciderações finais

Queria publicar algo a alguns dias por que vai que ganho uma ou duas Tabcoins e ai posso "gastar" com alguma coisa legal que achar por aqui (todo dia tem) e apenas juntei o util ao agradavel, essa publicação está meio porca mas é a minha primeira e está sendo meio que as pressas, bom de qualquer forma o chat GPT, dessa vez, acabou mais atrapalhando do que ajudando.

Existem diversas formas de trabalhar o front-end no Laravel:

  • Blade Components => mais próximo do HTML Puro
  • Livewire => Uma forma que tenta simular layouts dinamicos sem uma lib javascriopt pra isso
  • Inertia => Você usa React ou VUE no front e o Laravel deixa tudo funcionando automagicamente
  • Não usar um front-end do Laravel e usar ele só como API

Para poder ajudar preciso saber qual a forma que você está usando.

criando a rota usando o metodo resourse

A partir dessa frase vou supor que é a primeira opção: Blade components.

Esta página da documentação mostra exatamente quais os métodos HTTP utilizados pelo resource:

Create usa GET Store usa POST

Suspeita: CSRF

Faça o seguinte teste:

Abra o inspetor (F12 no chrome) antes de enviar o formulário Abra a aba Rede do inspetor Submeta o formulário Verifique o código HTTP da resposta do store

Se for 419 falta o token CSRF.

Esta página explica o que é esse token. Para resolver basta colocar @csrf dentro do form. dessa forma:

<form method="POST" action="/profile/store">
    @csrf
    <input [...] />
    [...]
</form>

Vou dar algumas dicas de quem já apanhou muito do Laravel quando estava começando...

1 - Se você está criando o nome das rotas em português, considere fazer em inglês para utilizar o Route Model Binding da forma mais fácil ou então deixe explícita a forma singular da rota (use o método parameters).

2 - Como o colega disse, verifique se o seu formulário contém o method="post" e o @csrf. Se for formulário para atualizar algo, tem que ter o @method('put') também.

3 - Verifique se o botão possui tem o type="submit".

4 - Se estiver utilizando form requests, verifique se o método authorize está retornando true;

5 - Verifique se não está tendo erro de validação do formulário, no seu front do formulário adicione o seguinte código...

@if ($errors->any())
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif

6 - Adicione um dd dentro do seu método store para testar os dados da requisição.

dd($request->all());

Acredito que em algum momento desses passos você descobrirá qual é o problema.

Recomento entrar em servidores do discord como: Beer and Code, tio Jobs, Eu sei PHP... A galera sempre ajuda.

EuSeiPhp

Turma do Tio Jobs