O Bard ajuda muito, perguntei para ele se havia um exemplo de como incuir um registro de banco de dados, e ele disse que sim e passou o código.
O código dele é muito bacana, mas na hora de testar, nada deu certo. O exemplo do Bard presume que não existe um montes de pastas no MVC, mas o ruim é que eu não consegui enxergar como os dados do View passavam para o Controller.
Eu pergutei para o Bard se era possível passar os dados de um <form> de um View diretamente para uma classe no Controller, e ele respondeu: não, não e não.
Logo, o único jeito de fazer um MVC funcionar é tudo na base da tentativa e erro, como eu faço com o PHP desde 2020. Depois de 57 tentativas, consegui o meu código MVC para incluir um único registro no banco de dados:
index.php
<?php
require_once "Views/timeView.php";======================================================Views/timeView.php
<?php
if(isset($_POST['nome'])){
require_once './Controllers/timeController.php';
$time=new timeController();
$time->salvarTime();exit;}?><!DOCTYPE html><html><head><title>Cadastrar novo time</title></head><body><formmethod="post"><inputtype="text"name="nome"placeholder="Name"><inputtype="email"name="email"placeholder="Email"><inputtype="password"name="senha"placeholder="Senha"><inputtype="text"name="telefone"placeholder="Telefone"><inputtype="submit"value="Salvar Novo Time"></form>
===========================================
Models/conexao.php
<?php
class conexao{private $conexao;publicfunction __construct(){
$host='localhost';
$user='root';
$password='';
$db='laravel';
$this->conexao=new mysqli($host,$user,$password,$db);return $this->conexao;}publicfunction consulta($sql){try{$query=$this->conexao->query($sql);}catch(Exception $e){echo $e->getMessage();exit;}
$rows=$query->fetch_all(MYSQLI_ASSOC);return $rows;}}=====================================================================Models/times.php
<?php
class times{private $conexao;publicfunction __construct(){
require_once 'conexao.php';
$this->conexao=new conexao();}publicfunction save($nome,$email,$senha,$telefone){
$this->conexao->consulta("insert into times (nome,email,senha,telefone)
values('$nome','$email','$senha','$telefone')");}}======================================================================Controllers/timeController.php
<?php
class timeController{private $times;publicfunction __construct(){require'./Models/times.php';
$this->times=new times();}publicfunction salvarTime(){
$name=$_POST['nome'];
$email=$_POST['email'];
$senha=$_POST['senha'];
$telefone=$_POST['telefone'];
$this->times->save($name,$email,$senha,$telefone);
header('Location: index.php');}}=============================================================Controllers/viewController.php
<?php
class view{private $template_name;private $vars=[];publicfunction __construct($template_name){
$this->template_name=$template_name;}publicfunction setVar($name,$value){
$this->vars[$name]=$value;}publicfunction getVar($name){return $this->vars[$name];}publicfunction render(){
extract($this->vars);
ob_start();
include $this->template_name;
$content=ob_get_contents();
ob_end_clean();return $content;}}
Eu ainda não testei a classe view nesse código, mas espero fazer dele o coração dos meus projetos futuros.
Pergunta
Frank K Hosaka
O Bard ajuda muito, perguntei para ele se havia um exemplo de como incuir um registro de banco de dados, e ele disse que sim e passou o código.
O código dele é muito bacana, mas na hora de testar, nada deu certo. O exemplo do Bard presume que não existe um montes de pastas no MVC, mas o ruim é que eu não consegui enxergar como os dados do View passavam para o Controller.
Eu pergutei para o Bard se era possível passar os dados de um <form> de um View diretamente para uma classe no Controller, e ele respondeu: não, não e não.
Logo, o único jeito de fazer um MVC funcionar é tudo na base da tentativa e erro, como eu faço com o PHP desde 2020. Depois de 57 tentativas, consegui o meu código MVC para incluir um único registro no banco de dados:
Eu ainda não testei a classe view nesse código, mas espero fazer dele o coração dos meus projetos futuros.
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.