Pessoal, criei o construtor e na alteração está passando mesmo sem informar o "nome" por exemplo. Como resolvo isso?
Pessoal, criei o construtor e na alteração está passando mesmo sem informar o "nome" por exemplo. Como resolvo isso?
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.
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!