MVC, MVT e Template Engine - #7 Create e Read
07/06/2020No tutorial de hoje iremos implementar no nosso sistema MVC um sistema de inserção de dados e de leitura desses dados no MySQL.
Create e Read no MVC - PHP
views/produto.blade.php
Na nossa view produto vamos criar os links redirecionando de acordo com a id setada no banco de dados:
@extends('templates.default')
@section('title','Produtos')
@section('content')
<h1 class="center">Meus Produtos</h1>
<a href="@php echo DIRPAGE.'produto_create'; @endphp">Adicionar</a>
@if(count($data)>1)
<table>
<tr>
<td>Nome</td>
<td>Preço</td>
<td>Ação</td>
</tr>
@foreach($data as $produtos)
<tr>
<td>{{$produtos->name}}</td>
<td>{{$produtos->price}}</td>
<td>
<a href="@php echo DIRPAGE.'produto/'.$produtos->id; @endphp">Ler</a> |
</td>
</tr>
@endforeach
</table>
@else
<strong>Nome: </strong>{{$data[0]->name}}<br>
<strong>Preço: </strong>{{$data[0]->price}}
@endif
@endsection
models/ProdutoModel.php
No nosso model vamos criar o método que selecionará o id específico pra gente e o método responsável por gravar os dados no banco (store).
#Exibe um produto específico
public function find($id)
{
$query=$this->conectDB()->prepare("select * from produtos where id=?");
$query->bindParam(1,$id,\PDO::PARAM_INT);
$query->execute();
return $data=$query->fetchAll(\PDO::FETCH_OBJ);
}
#Cadastrar no banco
public function store($name,$price)
{
$id=0;
$query=$this->conectDB()->prepare("insert into produtos values(?,?,?)");
$query->bindParam(1,$id,\PDO::PARAM_INT);
$query->bindParam(2,$name,\PDO::PARAM_STR);
$query->bindParam(3,$price,\PDO::PARAM_STR);
return $query->execute();
}
Com o código acima já é possível ler qualquer dado do nosso sistema. Agora partiremos para o create, ou seja, para inserção de dados no nosso sistema.
produto_create.blade.php
Primeiramente criaremos uma view pra receber o formulário de cadastro:
@extends('templates.default')
@section('title','Adicionar Produtos')
@section('content')
{{$success ?? ''}}
<form name="form1" id="form" method="post" action="@php echo DIRPAGE.'produto_create'; @endphp">
<input name="name" id="name" placeholder="Nome:" type="text" required> <br>
<input name="price" id="price" placeholder="Preço:" type="text" required> <br>
<input type="submit" value="Cadastrar"> <br>
</form>
@endsection
web/routes.php
Posteriormente iremos criar essa rota recém criada:
<?php
$routes=new \Controllers\RoutesController();
$routes->getRoute('','HomeController@index');
$routes->getRoute('produto','ProdutoController@index');
$routes->getRoute('produto_create','ProdutoController@create');
$routes->getRoute('contato','ContatoController@showContacts');
Na sequência precisamos criar o controller responsável por executar essa criação:
#Adicionar novos produtos
public function create()
{
if(count($_POST)>0){
$name=filter_input(INPUT_POST,'name',FILTER_DEFAULT);
$price=filter_input(INPUT_POST,'price',FILTER_DEFAULT);
if($this->store($name,$price)){
$success='Dados inseridos com sucesso!';
return $this->blade->render('produto_create',compact('success'));
}
}else{
return $this->blade->render('produto_create');
}
}
Por hoje é só! Sucesso nos códigos e na vida!
Precisando de uma ajudinha? webdesignemfoco@gmail.com