Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Problema para editar produto (Laravel)

Hoje eu estava refazendo a aula de Editando Nome, e na parte em que os valores deveriam ser passados na hora de editar um produto, quando eu faço o isset dos campos, ele simplesmente não retorna nada...

Eu tenho os seguintes códigos:

Rota /editar/{produtoID}

Route::get('/editar/{produtoID}',function(){
        $afiliados = DB::table('afiliados')->get();
        $categorias = DB::table('categoriaprodutos')->get();
        return view('produtos.editar', compact('afiliados','categorias'));})->name('editar-produto');

Botão

<a href="{{ route('editar-produto', $produto->produtoID) }}">
         <button class="btn btn-sm btn-info" data-bs-toggle="tooltip" data-bs-placement="top" title="Editar">
                 <i class="fa-regular fa-pen-to-square"></i>
         </button>
 </a>

ProdutosController.php

public function editar(Produto $produtoID)
    {
        return view('produtos.editar')->with('produtoID', $produtoID);
    }

Porém, nada é passado na url para que eu possa popular os campos com os dados do produto que estou editando.

Caso precise, esse é o git do meu projeto: https://github.com/ElisameAraujo/adminNaturezaCura

2 respostas
solução!

Oii, Elisame.

Para editar um produto no Laravel, você pode simplificar a rota para algo parecido com isto:

Route::get('/editar/{produto}',function(Produto $produto){
        return view('produtos.editar', compact('produto'));})->name('editar-produto');

Veja que eu mudei de produtoID para produto, para que o Laravel possa automaticamente buscar e injetar o objeto Produto correto com base na URL. Quando você usa function(Produto $produto), o Laravel entende que o objeto Produto deve ser injetado automaticamente sempre que a rota for acessada.

E a partir disso você pode acessar o valor através da view da seguinte maneira:

@isset($produto)
     value="{{$produto->nomeProduto}}"
@endisset

Espero ter ajudado e bons estudos.

Muito obrigado! Testei aqui e funcionou, perfeitamente!