Crie o model CstCofins
para criar o model CstCofins use o comando: php artisan make:model CstCofins -m
Crie um controller de recursos chamado Cfop, para que o projeto fique mais organizado salve o controller numa pasta chamada NotaFiscal
Crie a view para a listagem de cfop
Dentro da pasta resources/view crie uma pasta chamada de NotaFiscal e dentro de NotaFiscal crie uma outra chamada de Cfop e dentro da pasta Cfop crie um arquivo chamado Index.blade.php
Copie o conteúdo do arquivo lst_cfop para o arquivo NotaFiscal/Cfop/Index.blade.php, não esqueça envolvê-lo pelos comandos:
@extends('template')
@section('conteudo')
//aqui fica o conteúdo do arquivo
@endsection
Execute seu sistema e pelo menu banco abre a página de listagem de cfop, mas deverá está parecida com imagem abaixo
Na view Index, faça os seguintes procedimentos:
- Faça o loop para receber os dados do banco e listar na tabela
- Configure o link para fazer a edição de um registro
- Configure o link para fazer a exclusão de um registro
@foreach ($lista as $l)
<tr>
<td align="center">{{ $l->id }}</td>
<td align="left">{{ $l->cfop }}</td>
<td align="left">{{ $l->descricao }}</td>
<td align="center">
<a href="{{ route('cfop.edit', $l->id) }}"
class="d-inline-flex gap-3 btn btn-outline-roxo btn-pequeno"><i
class="fas fa-edit"></i>
Editar</a>
<a href="javascript:;"
onclick="confirm('Tem Certeza?') ? document.getElementById('apagar{{ $l->id }}').submit() : '';"
class="d-inline-flex gap-3 btn btn-outline-vermelho btn-pequeno">
<i class="fas fa-trash-alt"></i>
<form action="{{ route('cfop.destroy', $l->id) }}" method="POST"
id="apagar{{ $l->id }}">
<input type="hidden" name="_method" value="DELETE">
@csrf
</form>
Excluir
</a>
</td>
</tr>
@endforeach
Configure os dados do formulário para inserção dos dados
configure os input atribuindo a eles na propriedade name o nome igual ao que foi definido na criação da tabela,
também observe os tipos de dados específicos e os que são obrigatórios atribua a propriedade required
<div class="col-3">
<label class="text-label d-block text-branco">Cfop </label>
<input type="text" name="codigo" value="{{ $cfop->cfop ?? old('cfop') }}"
class="form-campo">
</div>
implemente o método store para receber e salvar os dados do formulário no Banco de dados
Implemente o método store de forma que o mesmo receba os dados do formulário e salve no banco de dados, caso ache necessário use um bloco try/catch
$req = $request->except(["_token"]);
try {
Cfop::Create($req);
return redirect()->route("cfop.index")->with("msg_sucesso", "Registro Inserido com Sucesso");
} catch (\Throwable $th) {
return redirect()->back()->with("msg_erro", "Erro: " . $th->getMessage());
}
Uma boa prática de programação é validar os dados antes de enviá-los para o banco de dados e uma bom recurso que o laravel oferece são os requests.
implemente um request de forma que faça todas as validações necessárias para salvar a informações no banco
Teste o sistema fazendo cadastros
Configure o método edit do Controller, com as seguinte ações:
- Busque a banco pelo id passado no parâmetro e guarde a informação em um array
- liste todas os cfops e guarde as informações em um array
- Chame a view Index, passando o array de dados como parâmetro
{
$dados["banco"] = Cfop::find($id);
$dados["lista"] = Cfop::get();
return View("NotaFiscal.Cfop.Index", $dados);
}
Configure os dados do formulário para ediççao dos dados
Configure o elemento form da view Index, com as seguintes ações:
- o sistema deve verificar se o objeto cfop existe,
- caso ele exista, no formulário deve ser configurada a rota banco.update
- caso não exista, no formulário deve ser configurada a rota bancp.store
@if (isset($cfop))
<form action="{{ route('cfop.update', $cfop->id) }}" method="POST">
@method('put')
@else
<form action="{{ route('cfop.store') }}" method="POST">
@endif
@csrf
na propriedade value de cada input, faça uma verificação se existe o objeto cfop, se existir imprimir o valor do campo correspondente, senão existe imprimir o objeto old()
<div class="col-2">
<label class="text-label d-block text-branco">Cfop </label>
<input type="text" name="cfop" value="{{ $cfop->cfop ?? old('cfop') }}"
class="form-campo">
</div>
Implemente o método update de forma que o mesmo receba os dados do formulário e salve no banco de dados, caso ache necessário use um bloco try/catch
$req = $request->except(["_token", "_method"]);
try {
Cfop::find($id)->update($req);
return redirect()->route("cfop.index")->with("msg_sucesso", "Registro Alterado com Sucesso");
} catch (\Throwable $th) {
return redirect()->back()->with("msg_erro", "Erro: " . $th->getMessage());
}
Faça o teste do seu sistema de forma que o mesmo consiga criar um novo registro e também alterá-lo
implemente o método destroy do Controller, com as seguinte ações:
- Busque o cofp pelo id passado no parâmetro
- Caso encontre, exclua o mesmo do banco, coloque esta instrução em um bloco try/catch
- redirecione para a rota index
try {
$cfop = Cfop::find($id);
if($cfop){
$cfop->delete();
}
return redirect()->route("banco.index")->with("msg_sucesso", "Registro Excluído com Sucesso");
} catch (\Throwable $th) {
return redirect()->back()->with("msg_erro", "Erro: " . $th->getMessage());
}
Teste o seu sistema, para que você tenha certeza que está tudo o ok, o sistema deverá:
- Listar todos os bancos
- Criar um banco nova
- Editar um banco selecionada
- Excluir um banco selecionada