Closed curruwilla closed 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.
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.
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();
Você já pode fazer um setData por fora do componente diretamente no objeto (active record) dela. Mas trazer pra dentro da classe é muito perigoso.
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():