robsonvleite / datalayer

The data layer is a persistent abstraction component of your database that PDO (O data layer é um componente para abstração de persistência no seu banco de dados que usa PDO com prepared statements)
https://www.upinside.com.br
MIT License
144 stars 53 forks source link

Update DataLayer.php #21

Closed curruwilla closed 4 years ago

curruwilla commented 4 years ago

Uma forma de passar todo o formulário com mais facilidade..

// $postData sendo o array que vem do form html, mesmo ideia do WC $postData = array( 'id' => 60, 'name' => 'meu produto' );

$product = new Product(); $product->setData($postData); $product->save():

hitaloramon commented 4 years ago

So tem que fica esperto em um quesito. Creio que usar o postData que vem direto do formulário pode ser um problema, pois alguém mal intencionado pode inserir no formulário um input com o name que ele deseja alterar e isso iria passar direto para aplicação. Então por questão de segurança é melhor remontar o array que vem do formulário, gerando um novo array com os devidos filtros.

curruwilla commented 4 years ago

So tem que fica esperto em um quesito. Creio que usar o postData que vem direto do formulário pode ser um problema, pois alguém mal intencionado pode inserir no formulário um input com o name que ele deseja alterar e isso iria passar direto para aplicação. Então por questão de segurança é melhor remontar o array que vem do formulário, gerando um novo array com os devidos filtros.

Eu penso que isso seria mais usual para uma area de administração, não acho que o usuario iria querer ferir seu proprio sistema, mas a observação é válida e é possível que exista furos fazendo assim.

curruwilla commented 4 years ago

Adicionei um array replace, assim o metodo findById não se torna inútil pra essa função..

O findyById busca todos os dados, e o postData atualiza somente o que estiver no array $pdt = (new \_app\Models\Products())->findById(60); $pdt->setData($postdata); $pdt->save();

robsonvleite commented 4 years ago

Você já pode fazer um setData por fora do componente diretamente no objeto (active record) dela. Mas trazer pra dentro da classe é muito perigoso.