Crie o model Unidade
para criar o model status use o comando: php artisan make:model Unidade -m
Crie a seed Unidade
para criar a seed status use o comando: php artisan make:seed UnidadeSeeder
Popule os dados da tabela unidade
public function run()
{
Unidade::firstOrCreate(['unidade' => "UNID", 'abrev' => "UNID" ]);
Unidade::firstOrCreate(['unidade' => "AMPOLA", 'abrev' => "AMPOLA" ]);
Unidade::firstOrCreate(['unidade' => "BALDE", 'abrev' => "BALDE" ]);
Unidade::firstOrCreate(['unidade' => "BANDEJ", 'abrev' => "BANDEJ" ]);
Unidade::firstOrCreate(['unidade' => "BARRA", 'abrev' => "BARRA" ]);
Unidade::firstOrCreate(['unidade' => "BISNAG", 'abrev' => "BISNAG" ]);
Unidade::firstOrCreate(['unidade' => "BLOCO", 'abrev' => "BLOCO" ]);
Unidade::firstOrCreate(['unidade' => "BOBINA", 'abrev' => "BOBINA" ]);
Unidade::firstOrCreate(['unidade' => "BOMB", 'abrev' => "BOMB" ]);
Unidade::firstOrCreate(['unidade' => "CAPS", 'abrev' => "CAPS" ]);
Unidade::firstOrCreate(['unidade' => "CART", 'abrev' => "CART" ]);
Unidade::firstOrCreate(['unidade' => "CENTO", 'abrev' => "CENTO" ]);
Unidade::firstOrCreate(['unidade' => "CJ", 'abrev' => "CJ" ]);
Unidade::firstOrCreate(['unidade' => "CM", 'abrev' => "CM" ]);
Unidade::firstOrCreate(['unidade' => "CM2", 'abrev' => "CM2" ]);
Unidade::firstOrCreate(['unidade' => "CX", 'abrev' => "CX" ]);
Unidade::firstOrCreate(['unidade' => "CX2", 'abrev' => "CX2" ]);
Unidade::firstOrCreate(['unidade' => "CX3", 'abrev' => "CX3" ]);
Unidade::firstOrCreate(['unidade' => "CX5", 'abrev' => "CX5" ]);
Unidade::firstOrCreate(['unidade' => "CX10", 'abrev' => "CX10" ]);
Unidade::firstOrCreate(['unidade' => "CX15", 'abrev' => "CX15" ]);
Unidade::firstOrCreate(['unidade' => "CX20", 'abrev' => "CX20" ]);
Unidade::firstOrCreate(['unidade' => "CX25", 'abrev' => "CX25" ]);
Unidade::firstOrCreate(['unidade' => "CX50", 'abrev' => "CX50" ]);
Unidade::firstOrCreate(['unidade' => "CX100", 'abrev' => "CX100" ]);
Unidade::firstOrCreate(['unidade' => "DISP", 'abrev' => "DISP" ]);
Unidade::firstOrCreate(['unidade' => "DUZIA", 'abrev' => "DUZIA" ]);
Unidade::firstOrCreate(['unidade' => "EMBAL", 'abrev' => "EMBAL" ]);
Unidade::firstOrCreate(['unidade' => "FARDO", 'abrev' => "FARDO" ]);
Unidade::firstOrCreate(['unidade' => "FOLHA", 'abrev' => "FOLHA" ]);
Unidade::firstOrCreate(['unidade' => "FRASCO", 'abrev' => "FRASCO" ]);
Unidade::firstOrCreate(['unidade' => "GALAO", 'abrev' => "GALAO" ]);
Unidade::firstOrCreate(['unidade' => "GF", 'abrev' => "GF" ]);
Unidade::firstOrCreate(['unidade' => "GRAMAS", 'abrev' => "GRAMAS" ]);
Unidade::firstOrCreate(['unidade' => "JOGO", 'abrev' => "JOGO" ]);
Unidade::firstOrCreate(['unidade' => "KG", 'abrev' => "KG" ]);
Unidade::firstOrCreate(['unidade' => "KIT", 'abrev' => "KIT" ]);
Unidade::firstOrCreate(['unidade' => "LATA", 'abrev' => "LATA" ]);
Unidade::firstOrCreate(['unidade' => "LITRO", 'abrev' => "LITRO" ]);
Unidade::firstOrCreate(['unidade' => "M", 'abrev' => "M" ]);
Unidade::firstOrCreate(['unidade' => "M2", 'abrev' => "M2" ]);
Unidade::firstOrCreate(['unidade' => "M3", 'abrev' => "M3" ]);
Unidade::firstOrCreate(['unidade' => "MILHEI", 'abrev' => "MILHEI" ]);
Unidade::firstOrCreate(['unidade' => "ML", 'abrev' => "ML" ]);
Unidade::firstOrCreate(['unidade' => "MWH", 'abrev' => "MWH" ]);
Unidade::firstOrCreate(['unidade' => "PACOTE", 'abrev' => "PACOTE" ]);
Unidade::firstOrCreate(['unidade' => "PALETE", 'abrev' => "PALETE" ]);
Unidade::firstOrCreate(['unidade' => "PARES", 'abrev' => "PARES" ]);
Unidade::firstOrCreate(['unidade' => "PC", 'abrev' => "PC" ]);
Unidade::firstOrCreate(['unidade' => "POTE", 'abrev' => "POTE" ]);
Unidade::firstOrCreate(['unidade' => "RESMA", 'abrev' => "RESMA" ]);
Unidade::firstOrCreate(['unidade' => "ROLO", 'abrev' => "ROLO" ]);
Unidade::firstOrCreate(['unidade' => "SACO", 'abrev' => "SACO" ]);
}
Crie um controller de recursos chamado Unidade, para que o projeto fique mais organizado salve o controller numa pasta chamada Cadastro
No controller UnidadeController implemente o método index, o qual deverá:
- pegar a lista de categorias e colocar um array
- chamar a view Categoria/Index com o array criado com a lista de unidade
public function index()
{
$dados["lista"] = Unidade::get();
return View("Cadastro.Unidade.Index", $dados);
}
Crie a view para a listagem de unidade
Dentro da pasta resources/view crie uma pasta chamada de Cadastro e dentro de Cadastro crie uma outra chamada de Unidade e dentro da pasta Unidade crie um arquivo chamado Index.blade.php
Copie o conteúdo do arquivo lst_unidade para o arquivo Cadastro/Unidade/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 unidade abre a página de listagem de unidade, 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->categoria }}</td>
<td align="center">
<a href="{{ route('categoria.edit', $l->id) }}"
class="d-inline-block 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('categoria.destroy', $l->id) }}" method="POST"
id="apagar{{ $l->id }}">
@method('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
<form action="{{ route('unidade.store') }}" method="POST">
@csrf
<div class="caixafield p-2 radius-4 border">
<div class=" p-2 pt-0 radius-4">
<div class="rows center-middle">
<div class="col-9">
<label class="text-label d-block text-branco">Unidade</label>
<input type="text" name="unidade" required class="form-campo">
</div>
<div class="col-3 mt-0 pt-4">
<input type="submit" value="Salvar" class="w-100 btn btn-roxo text-uppercase">
</div>
</div>
</div>
</div>
</form>
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 {
Unidade::Create($req);
return redirect()->route("unidade.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
No método store troque o parâmetro Request para UnidadeRequest
public function store(UnidadeRequest $request)
{
$req = $request->except(["_token"]);
try {
Unidade::Create($req);
return redirect()->route("unidade.index")->with("msg_sucesso", "Registro Inserido com Sucesso");
} catch (\Throwable $th) {
return redirect()->back()->with("msg_erro", "Erro: " . $th->getMessage());
}
}
Teste o sistema fazendo cadastros
Configure o método edit do Controller, com as seguinte ações:
- Busque a unidade pelo id passado no parâmetro e guarde a informação em um array
- liste todas as unidades e guarde as informações em um array
- Chame a view Index, passando o array de dados como parâmetro
public function edit($id)
{
$dados["unidade"] = Unidade::find($id);
$dados["lista"] = Unidade::get();
return View('Cadastro.Unidade.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 unidade existe,
- caso ele exista, no formulário deve ser configurada a rota unidade.update
- caso não exista, no formulário deve ser configurada a rota unidade.store
@if (isset($unidade))
<form action="{{ route('unidade.update', $unidade->id) }}" method="POST">
@method('put')
@else
<form action="{{ route('unidade.store') }}" method="POST">
@endif
na propriedade value de cada input, faça uma verificação se existe o objeto unidade, se existir imprimir o valor do campo correspondente, senão existe imprimir o objeto old()
<div class="{{ isset($unidade->unidade) ? 'bg-edit' : 'caixafield' }} p-2 radius-4 border">
<div class=" p-2 pt-0 radius-4">
<div class="rows center-middle">
<div class="col-6">
<label class="text-label d-block text-branco">Nome </label>
<input type="text" name="unidade" value="{{ $unidade->unidade ?? old('abrev') }}"
class="form-campo">
</div>
<div class="col-3">
<label class="text-label d-block text-branco">Abrev </label>
<input type="text" name="abrev" value="{{ $unidade->abrev ?? old('unidade') }}"
class="form-campo">
</div>
<div class="col-3 mt-0 pt-4">
<input type="submit" value="Salvar" class="w-100 btn btn-roxo text-uppercase">
</div>
</div>
</div>
</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 {
Unidade::find($id)->update($req);
return redirect()->route("unidade.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 a unidade pelo id passado no parâmetro
- Caso encontre, exclua a mesma do banco, coloque esta instrução em um bloco try/catch
- redirecione para a rota index
public function destroy($id)
{
try {
$unidade = Unidade::find($id);
$unidade->delete();
return redirect()->route("unidade.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 todas as unidades
- Criar uma unidade nova
- Editar uma unidade selecionada
- Excluir uma unidade selecionada