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

[Dúvida] Salvar o status de um produto baseado no Submit (Laravel)

Seguinte, eu tenho um formulário em que estou adicionando um produto afiliado, e assim que o usuário finalizar de adicionar os dados ele tem dois botões - três se contar o "Cancelar" - em que ele pode definir a visibilidade do produto quando ele fazer o submit do formulário, nesse caso são esses botões:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Aqui está o código pra esses botões:

<div class="mb-3">
        <button type="submit" class="btn btn-light" name="rascunho"><i class="fa-regular fa-floppy-disk"></i> Salvar como Rascunho</button> 
        <button type="submit" class="btn btn-success" name="publicar"><i class="fa-regular fa-circle-check"></i> Publicar</button>
        <a href="/produtos/todos"><span class="btn btn-danger"><i class="fa-regular fa-circle-xmark"></i> Cancelar</span></a>
    </div>

Já no meu controller - que ainda não tá finalizado - eu tenho o seguinte código:

public function salvar(Request $request)
    {
        $nomeProduto = $request->input('nomeProduto');
        $descricaoProduto = $request->input('descricao');
        $linkAfiliado = $request->input('linkAfiliado');
        $categoriaProduto = $request->categoriaProduto;
        $afiliacao = $request->afiliacao;

        if (DB::insert(
            'INSERT INTO produtos (
            nomeProduto, descricao, linkAfiliado, categoriaProdutoID, afiliacaoID, statusProduto) 
            VALUES (?, ?, ?, ?, ?, ?)',
            [$nomeProduto, $descricaoProduto, $linkAfiliado, $categoriaProduto, $afiliacao, 1]
        )) {
            return 'OK';
        } else {
            return 'Erro';
        }
    }

Por padrão eu estou definindo ele como Público (statusProduto = 1), mas eu quero que ele atribua isso baseado no botão de submit onde:

Publicar = 1 Salvar como Rascunho = 2

Como eu faria para que a query entenda que o botão de submit escolhido é de Rascunho ou Público e atribuir isso ao statusProduto?

Eu tinha feito isso com o PHP puro em outro projeto de estudo, mas não faço ideia de como fazer isso no Laravel...

2 respostas
solução!

Olá, Elisame. Tudo bem?

Eu acredito que uma das soluções para resolver o seu problema é adicionar um if no seu controller para verificar qual botão foi clicado e, a partir disso, definir o valor do statusProduto na sua query.

Por exemplo, você pode alterar o seu controller para algo como:

public function salvar(Request $request)
{
    $nomeProduto = $request->input('nomeProduto');
    $descricaoProduto = $request->input('descricao');
    $linkAfiliado = $request->input('linkAfiliado');
    $categoriaProduto = $request->categoriaProduto;
    $afiliacao = $request->afiliacao;

    if ($request->has('rascunho')) {
        $statusProduto = 2;
    } elseif ($request->has('publicar')) {
        $statusProduto = 1;
    }

    if (DB::insert(
        'INSERT INTO produtos (
        nomeProduto, descricao, linkAfiliado, categoriaProdutoID, afiliacaoID, statusProduto) 
        VALUES (?, ?, ?, ?, ?, ?)',
        [$nomeProduto, $descricaoProduto, $linkAfiliado, $categoriaProduto, $afiliacao, $statusProduto]
    )) {
        return 'OK';
    } else {
        return 'Erro';
    }
}

Nesse exemplo, estamos verificando se o botão "Salvar como Rascunho" foi clicado ($request->has('rascunho')) e, se sim, definimos o valor de $statusProduto como 2. Se o botão "Publicar" foi clicado ($request->has('publicar')), definimos o valor de $statusProduto como 1.

Espero ter ajudado e bons estudos!

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

Perfeito!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software