Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

__construct e a alteração do produto

Pessoal, criei o construtor e na alteração está passando mesmo sem informar o "nome" por exemplo. Como resolvo isso?

4 respostas

Oi Débora, tudo bom?

Acho que não entendi muito bem, de que alteração estamos falando? =)

André, Desculpe.. Vou tentar novamente. rs.. A alteração de produto está sendo efetuada mesmo sem estar passando um valor para "nome", por exemplo. E no meu construtor é um atributo obrigatório.

solução!

Dando uma olhada aqui no altera-produto.php:

$nome = $_POST['nome'];
$preco = $_POST['preco'];
$descricao = $_POST['descricao'];

if(array_key_exists('usado', $_POST)) {
    $usado = "true";
} else {
    $usado = "false";
}

$produto = new Produto($nome, $preco, $descricao, $categoria, $usado);

Se seu construtor obriga a passagem desses dados:

function __construct($nome, $preco, $descricao, Categoria $categoria, $usado) {

Significa que estamos recebendo algo em $_POST['nome']... Repara que todo form sempre retorna uma string. Acredito que no seu caso, o que estamos recebendo é uma string vazia! O que é diferente de não passar nada, certo?

Para evitar esse caso, a gente precisaria fazer uma verificação lá no nosso construtor pra garantir que uma string vazia também não passe =)

function __construct($nome, $preco, $descricao, Categoria $categoria, $usado) {
if($nome == ''){
    // não deixa criar!
}

Assim, conseguimos impedir, também, a string vazia!

Espero ter ajudado =)

Abraço!

Muito bom André! Entendi! Obrigada!