Ir para conteúdo
Fórum Script Brasil
  • 0

Laravel: como atribuir um método para cada tarefa?


Frank K Hosaka

Pergunta

Em 2022, eu não sabia como criar um método para cada tarefa. A minha saída foi criar apenas um método para executar várias tarefas.

Basicamente eu copiei o código que eu tinha no PHP e fui colando na pasta view do Laravel.

Aqui em 2024, consegui resolver esse problema.

Basicamente todo formulário HTML tem apenas quatro tarefas: incluir, excluir, alterar e consultar.

Para diferenciar as tarefas do formulário Fornecedor e do Produto, inclui o nome da classe junto com a tarefa, assim: produto.incluir, produto.excluir, etc.

O meu primeiro código ficou assim:

arquivo app.Http.Controllers.Etiqueta.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\tbprod;

class Etiqueta extends Controle
{
    public function inicio($produto=null,$venda=null)
    {  
        if(session()->has('etiqueta'))
        {
            $etiquetas=session('etiqueta');
        } else {
            $etiquetas=[];
            session(['etiqueta'=>$etiquetas]);
        }
        return view('etiqueta',['produto'=>$produto,'venda'=>$venda,'etiquetas'=>$etiquetas]);
    }

    public function procurar(Request $request)
    {
        $procurar=str_replace(" ","%",$request->input('procurar'));
        session(['end'=>"etiqueta.titulo"]);
        session(['filtro'=>$procurar]);
        return redirect('produto');
    }

    public function apagar()
    {
        session()->forget('etiqueta');
        $etiquetas=[];
        return $this->inicio();
    }

    public function etiquetar(Request $request)
    {
        $titulo=$request->input('titulo');
        $venda=$request->input('venda');
        $etiquetas=session('etiqueta');
        $etiquetas[]=(object)['titulo'=>substr($titulo,0,12),'venda'=>$venda];
        session(['etiqueta'=>$etiquetas]);
        session()->forget('codprod');
        return $this->inicio();
    }
    
    public function titulo()
    {
        $codprod=session('codprod');
        $prod=tbprod::where('codprod',$codprod)->first();
        $produto=$prod->prod;
        $venda=$prod->venda;
        return $this->inicio($produto,$venda);
    }
}

arquivo routes.web.php
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Etiqueta;

Route::middleware(['auth','verified'])->group(function()
{
    Route::get('etiqueta',[Etiqueta::class,'inicio']);
    Route::get('etiqueta.apagar',[Etiqueta::class,'apagar']);
    Route::get('etiqueta.etiquetar',[Etiqueta::class,'etiquetar']);
    Route::get('etiqueta.procurar',[Etiqueta::class,'procurar']);
    Route::get('etiqueta.titulo',[Etiqueta::class,'titulo']);
}

arquivo resources.views.etiqueta.blade.php
@include('menu')
<script>
    btmenu.innerHTML="Etiquetas"
    document.title="Etiquetas"
    function imprimir()
    {
        cabecalho.style='display:none'
        esconder.style='display:none'
        window.print()
        location.replace('etiqueta')
    }
</script>
<div id=esconder>
<table><tr><td>
<form action='etiqueta.procurar'>
    Pesquisar <input placeholder=produto name=procurar onchange=submit()>
</form>
<td class=px-3><a href=etiqueta.apagar>Apagar</a>
<td class=px-3><a href=# onclick=imprimir()>Imprimir</a>
</table>
<p>
<form action='etiqueta.etiquetar'>
    <input name=titulo value='{{$produto}}' size=40><br>
    <input name=venda value='R$ {{dec($venda)}}'><br>
    <input type=submit value='Incluir na lista de Etiquetas'>
</form>
</p>
</div>
<table class=table-bordered>
@foreach($etiquetas as $key=>$etiqueta)
    @if(($key) % 5==0)
    <tr class=fw-bold>
    @endif
    <td style="padding: 1rem">
    <div>
    {{$etiqueta->titulo}}
    </div>
    <div>
    {{$etiqueta->venda}}
    </div>
@endforeach
</table>

 

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...