Home
Button Mobile Webdesign em Foco
Newsletter Webdesign em Foco
Support Webdesign em Foco
Contribuition Webdesign em Foco
Doe para a Webdesign em Foco
Suporte da Webdesign em Foco
Fechar

MVC, MVT e Template Engine - #6 Models

05/06/2020

No tutorial de hoje trabalharemos com models. Os models servem para manipular bancos de dados, webservices, dentre outros.

Model no sistema MVC

ConexaoModel.php

Esse model ficará responsável por linkar o nosso projeto ao banco de dados MySQL.

<?php
namespace Models;

abstract class ConexaoModel
{
    protected function conectDB()
    {
        try{
            return $con=new \PDO("mysql:host=".DBHOST.";dbname=".DBNAME."",DBUSER,DBPASS);
        }catch (\PDOException $error){
            return $error->getMessage();
        }
    }
}

No arquivo config/config.php nós setamos o banco de dados como sistema, então não esqueça de acessar http://localhost/phpmyadmin e criar esse banco de dados.

create database sistema
create table produtos (id int not null auto_increment, primary key(id), name varchar(90), price varchar(30))

Criaremos também um model para os produtos.

ProdutoModel

<?php
namespace Models;

class ProdutoModel extends ConexaoModel
{
    public function showAll()
    {
        $query=$this->conectDB()->prepare("select * from produtos");
        $query->execute();
        return $data=$query->fetchAll(\PDO::FETCH_OBJ);
    }
}

Agora no ProdutoController usaremos o ProdutoModel:

ProdutoModel

<?php
namespace Controllers;

use Jenssegers\Blade\Blade;
use Models\ProdutoModel;

class ProdutoController extends ProdutoModel{

    private $blade;

    public function __construct()
    {
        $this->blade=new Blade(DIRREQ.'views',DIRREQ.'lib/cache');
    }

    #Página index
    public function index($url=null,$tipo=null,$marca=null)
    {
        $data=$this->showAll();
        return $this->blade->render('produto',compact('data'));
    }
}

views/produto.blade.php

Agora basta exibirmos os resultados na view.

@extends('templates.default')
@section('title','Produtos')
@section('content')
    <h1>Meus Produtos</h1>
    <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></td>
                </tr>
        @endforeach
    </table>
@endsection

style.css

Agora basta fazermos a estilização dos dados exibidos:

*{margin:0; padding:0; box-sizing: border-box;}

table{width: 80%; margin: 20px auto; text-align: center;}
table tr:first-child{background: #333; color:#fff; font-weight: bold;}
table tr:nth-child(2n){background: #ddd;}
table td{padding: 10px 0;}
table td:nth-child(1){width: 70%;}
table td:nth-child(2){width: 20%;}
table td:nth-child(3){width: 10%;}

templates/default.blade.php

Não esqueça de linkar o css no template default do nosso sistema:

<link rel="stylesheet" href="@php echo DIRPAGE.'lib/css/style.css'; @endphp">

Por hoje é só! Sucesso nos códigos e na vida!

Receba as aulas da Webdesign em Foco em Seu Email
Suporte Webdesign em Foco

Posts Relacionados

MVC, MVT e Template Engine - #5 Criando Páginas
No tutorial de hoje aprenderemos como configurar o nosso sistema para criar páginas para linkar os assuntos na nossa aplicação.
Saiba mais!
MVC, MVT e Template Engine - #7 Create e Read
No tutorial de hoje iremos implementar no nosso sistema MVC um sistema de inserção de dados e de leitura desses dados no MySQL.
Saiba mais!
MVC Completo
Neste curso aprenderemos como criar o padrão de projeto MVC completo, analisando desde sua estrutura até a programação.
Saiba mais!