Boa tarde pessoal. Estou com mais um erro, agora no formulário de alteração. Já consigo inserir e excluir o produto, mas na hora que chamo para alterar aparece o seguinte erro:
Fatal error: Call to a member function setNome() on array in C:\wamp64\www\loja\produto-formulario-base.php on line 8
Se no produto-formulario-base.php eu retirar a função setNome, deixar apenas como produto['nome'] por exemplo, o campo vem preenchido para alteração, mas ai o formulário de adição começa a dar o mesmo erro acima.
Segue o código do produto-altera-formulario.php
<?php
require_once ("header.php");
$categoria = new Categoria();
$categoria->setId($_GET['categoria_id']);
if(array_key_exists('usado', $_POST)){
$usado = "true";
} else {
$usado = "false";
}
$produto = new Produto($_POST['nome'], $_POST['preco'], $_POST['descricao'], $categoria, $usado);
$produto->setId($_GET['id']);
$usado = $produto->getUsado() ? "checked='checked'" : "";
$produtoDAO = new produtoDAO($conexao);
$produto = $produtoDAO->buscaProduto($produto);
#var_dump($produto);
$categoriaDAO = new categoriaDAO($conexao);
$categorias=$categoriaDAO->listaCategorias();
?>
<h1>Formulário de alteração de produtos</h1>
<form action="altera-produto.php" method="post">
<input type="hidden" name="id" value="<?=$produto['id']?>" />
<table class="table">
<?php include ("produto-formulario-base.php");?>
<tr>
<td><button class="btn btn-primary" type="submit">Alterar</td>
</tr>
</table>
</form>
<?php include("footer.php");?>
E o código do produto-formulario-base.php
<tr>
<td>Nome: </td>
<td><input class="form-control" type="text" name="nome" value="<?=$produto->setNome($_POST['nome'])?>"></td>
</tr>
<tr>
<td>Preco: </td>
<td><input class="form-control" type="number" name="preco" value="<?=$produto->setPreco($_POST['preco'])?>"></td>
</tr>
<tr>
<td>Descrição: </td>
<td><textarea class="form-control" name="descricao"><?=$produto->setDescricao($_POST['descricao'])?></textarea>
</tr>
<tr>
<td></td>
<td><input type="checkbox" name="usado" <?=$usado?> value="true"> Usado
</tr>
<tr>
<td>Categorias: </td>
<td>
<select class="form-control" name="categoria_id">
<?php foreach($categorias as $categoria) :
$essaEhaCategoria = $produto->getCategoria()->getId() == $categoria->getId();
$selecao = $essaEhaCategoria ? "selected='selected'" : ""?>
<option value="<?=$categoria->getId()?>" <?=$selecao?>> <?=$categoria->getNome()?></option>
<?php endforeach ?>
</select>
</td>
</tr>