MVC Completo - #16 Model II (Inserção)
24/04/2018Olá turma! Nessa aula continuaremos nosso trabalho no model. Vamos iniciar fazendo uma classe de inserção no banco de dados. Para isso, vamos fazer o serviço completo. Siga os passos abaixo:
Cadastrando clientes no sistema MVC
1 - Dentro de app/view crie o diretório cadastro e crie o arquivo Main.php
2 - O arquivo Main receberá o formulário de cadastro conforme código abaixo:
<form name="FormCadastro" id="FormCadastro" action="<?php echo DIRPAGE.'cadastro/cadastrar'; ?>" method="post">
Nome: <input type="text" name="Nome" id="Nome"><br>
Sexo:
<select name="Sexo" id="Sexo">
<option value="">Selecione</option>
<option value="Masculino">Masculino</option>
<option value="Feminino">Feminino</option>
</select><br>
Cidade: <input type="text" name="Cidade" id="Cidade"><br>
<input type="submit" value="Cadastrar">
</form>
3 - Vamos criar a nossa rota editando o arquivo src/classes/ClassRoutes:
$this->Rota=array(
"cadastro"=>"ControllerCadastro"
);
4 - Vamos criar dentro de app/controller o ControllerCadastro. Esse controller ficará responsável por receber as variáveis do formulário e chamar o método de cadastro do model. Lembram-se que nunca o cliente acessa diretamente o model, há sempre um controller na frente? Então é isso que vamos fazer, blindar nosso model.
namespace App\Controller;
use Src\Classes\ClassRender;
use Src\Interfaces\InterfaceView;
use App\Model\ClassCadastro;
class ControllerCadastro extends ClassCadastro{
protected $Nome;
protected $Sexo;
protected $Cidade;
public function __construct()
{
$Render=new ClassRender();
$Render->setTitle("Cadastro");
$Render->setDescription("Faça seu cadastro.");
$Render->setKeywords("cadastro de clientes, cadastro");
$Render->setDir("cadastro");
$Render->renderLayout();
}
#Receber variáveis
private function recVariaveis()
{
if(isset($_POST['Nome'])){ $this->Nome=filter_input(INPUT_POST, 'Nome', FILTER_SANITIZE_SPECIAL_CHARS); }
if(isset($_POST['Sexo'])){ $this->Sexo=filter_input(INPUT_POST, 'Sexo', FILTER_SANITIZE_SPECIAL_CHARS); }
if(isset($_POST['Cidade'])){ $this->Cidade=filter_input(INPUT_POST, 'Cidade', FILTER_SANITIZE_SPECIAL_CHARS); }
}
#Chamar o método de cadastro da ClassCadastro
public function cadastrar()
{
$this->recVariaveis();
$this->cadastroClientes($this->Nome, $this->Sexo,$this->Cidade);
echo "Cadastro efetuado com sucesso!";
}
}
5 - Posteriormente iremos criar nossa ClassCadastro dentro de app/model. Esse arquivo sim será o nosso model com acesso direto ao DB.
namespace App\Model;
use App\Model\ClassConexao;
class ClassCadastro extends ClassConexao{
private $Db;
#Cadastrará os clientes no sistema
protected function cadastroClientes($Nome , $Sexo , $Cidade)
{
$Id=0;
$this->Db=$this->conexaoDB()->prepare("insert into teste values(:id , :nome , :sexo , :cidade)");
$this->Db->bindParam(":id",$Id,\PDO::PARAM_INT);
$this->Db->bindParam(":nome",$Nome,\PDO::PARAM_STR);
$this->Db->bindParam(":sexo",$Sexo,\PDO::PARAM_STR);
$this->Db->bindParam(":cidade",$Cidade,\PDO::PARAM_STR);
$this->Db->execute();
}
}
Repare no código acima que extendemos a classe conexão criada na última aula. Extendendo essa classe temos acesso aos métodos da classe PDO como o prepare e o bindParam.
Nas próximas aulas continuamos pelo model com o select, update e delete. Até lá!