Aula 05 - Modelo padrão (Create)




Antes de criar o método para cadastrar, vou fazer uma listagem dos usuários cadastrados.

Depois de ter feito essa listagem, chegou a hora de criar o método create, e para esse método funcionar, criei uma classe somente para trabalhar com os atributos passados por parâmetro, e chamei essa classe dentro do AsModel para usar no método create..

home.php

<h2 style="color: green;"><i class="user icon"></i>Cadastrar User</h2>
  <form class="ui form" method="post">
  <div class="field">
    <label>User</label>
    <input type="text" name="name" placeholder="Nome">
    <input type="hidden" name="cadastrar">
  </div>
  <div class="field">
    <label>E-mail</label>
    <input type="email" name="email" placeholder="E-mail">
  </div>
  <div class="field">
    <label>Password</label>
    <input type="text" name="password" placeholder="Senha">
  </div>

  <button class="ui blue button" type="submit"><i class="check green icon"></i>Cadastrar</button>
</form>

<div class="ui divider"></div>

    <h2 style="color: green;"><i class="users icon"></i>Lista de users Cadastrados</h2>
    <table width="100%" class="ui table">
    <thead style="background-color: #000;color:#fff;">
        <tr>
            <th>User</th>
            <th>Email</th>
            <th>Editar</th>
            <th>Excluir</th>
        </tr>
    </thead>
        <tbody>
        <?php
            $users = new Acme\Models\UserModel;
            $listaUsers = $users->read();
            foreach($listaUsers as $user):
        ?>
            <tr>
                <td><?php echo $user->name; ?></td>
                <td><?php echo $user->email; ?></td>
                 <td><a href="?p=edit&editar=true&id=<?php echo $user->id ?>" class="ui green button"><i class="edit icon"></i>Editar</a></td>
                <td><a href="?excluir=true&id=<?php echo $user->id ?>" class="ui red button"><i class="remove icon"></i>Excluir</a></td>
            </tr>
        <?php endforeach ?>
        </tbody>
    </table>

Attributes.php


namespace Asw\Database;

class Attributes{
    public function createFields($attributes){
       return implode(',',array_keys($attributes));
    }

    public function createValues($attributes){
        return ':'.implode(',:',array_keys($attributes));
    }

    public function bindCreateParameters($attributes){
        $values = $this->createValues($attributes);
        $bindParameters = array_combine(explode(',',$values), array_values($attributes));
        return $bindParameters;
    }
}

create ASWModel

public function create($attributes){

        $fields = $this->attributes->createFields($attributes);
        $values = $this->attributes->createValues($attributes);

        $query = "insert into $this->table($fields) values($values)";
        $pdo = $this->database->prepare($query);
        $bindParameters = $this->attributes->bindCreateParameters($attributes);
        try{
            $pdo->execute($bindParameters);
            return $this->database->lastInsertId();
        }catch(\PDOException $e){
            dump($e->getMessage());
        }
    }

Abraço e até a próxima !!