Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

M@rc

Chamar um método pelo formulário

Recommended Posts

Boa noite pessoal,

Tenho um classe que tem um método de inserir no banco e um formulário que vai receber os dados e enviar via post. Tem como no action do form eu passar a classe (ProdutoController) e o método (insere) para os quais eu quero enviar os dados desse form?

<?php  

class ProdutoController {

	public function insere() {
		$nome = $_POST['nome'];
		$descricao = $_POST['descricao'];
		$preco = $_POST['preco'];
		$conexao = new Database();
		$produto = new Produto();
		$produto->setNome($nome);
		$produto->setPreco($preco);
		$produto->setDescricao($descricao);
		$produtoDao = new ProdutoDao();
		$produtoDao->adiciona($conexao, $produto);
	}
} 
<form method="post" action=" ">
     <div class="form-group">
	<label>Nome</label>
	<input type="text" class="form-control" name="nome">
     </div>
     <div class="form-group">
	<label>Descrição</label>
	<input type="text" class="form-control" name="descricao">
     </div>
     <div class="form-group">
        <label>Preço</label>
	<input type="text" class="form-control" name="preco">
     </div>
     <button type="submit" class="btn btn-primary">Adicionar</button>
</form>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Conheço esse vídeo e não me ajudou muito com essa minha dúvida. Você sabe se é possível fazer o que falei e como?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha cara tenta para ver se resolve, caso negativo pesquisarei mas e te ajudarei

Eu vi, só que não entendi no que isso resolveria o problema de passar a classe e método pelo action.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Assisti ao vídeo e não tinha nada sobre fazer isso que preciso. E ele usa um framework. Bom, parece que não é possível fazer o que preciso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui resolver meu problema da seguinte forma:

<?php  

require_once ('../models/Produto.php');
require_once ('../models/ProdutoDAO.php');
require_once ('../config/Database.php');

if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['method'])) {
	$method = $_POST['method'];
	if(method_exists('ProdutoController', $method)) {
		$product = new ProdutoController;
		$product->$method($_POST);
	} else {
		echo 'Metodo incorreto';
	}
}

class ProdutoController{

	function insere() {
		$nome = $_POST['nome'];
		$descricao = $_POST['descricao'];
		$preco = $_POST['preco'];

		$conexao = new Database();

		$produto = new Produto();
		$produto->setNome($nome);
		$produto->setPreco($preco);
		$produto->setDescricao($descricao);

		$produtoDao = new ProdutoDao();
		$produtoDao->adiciona($conexao, $produto);
	}

}



<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="../../public/css/bootstrap.min.css" rel="stylesheet">
	<title>Adiciona Produto</title>
</head>
<body>

<div class="container">
	<h3>Adicionar Produto</h3>
	<form method="post" action="../../controllers/ProdutoController.php">
	<input type="hidden" name="method" value="insere">
	  <div class="form-group">
	    <label>Nome</label>
	    <input type="text" class="form-control" name="nome">
	  </div>
	  <div class="form-group">
	    <label>Descrição</label>
	    <input type="text" class="form-control" name="descricao">
	  </div>
	  <div class="form-group">
	    <label>Preço</label>
	    <input type="text" class="form-control" name="preco">
	  </div>
	  <button type="submit" class="btn btn-primary">Adicionar</button>
	</form>
</div>
</body>
</html>


Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.