Jump to content

inserir nova variável


ruisonika
 Share

Recommended Posts

Boa tarde,
Alguem sabe como inserir em class/Cart.php uma função que no template retorne um campo da tabela ps_customers.
Eu criei um campo especifico na ps_customers para saber se aquele cliente tem a opção pagamento a 30 dias (campo pay_later).

public function payLater($id_customer)
    {
        $sql =  "SELECT ps_customer.pay_later
                FROM ps_customer
                WHERE id_customer =".(int)$id_customer;
        //if i change (int)$id_customer for a real id number like 43 it shows correct info
        $result = Db::getInstance()->getValue($sql);
        return $result;
    }

E no template chamo isto.
 

{Cart::payLater(Tools::getvalue('pay_later'))}

Se na função eu coloco o id fixo de um utilizador ele retorna o valor 0 ou 1 (como pretendido), mas quando mudo para a variável do prestashop para chamar o this id customer ele não dá nada.
 

Share this post


Link to post
Share on other sites

  • 2 weeks later...
2 hours ago, Daniel - PrestaBR said:

Qual a versão do PrestaShop?
Tem q verificar como você está passando a variável id_customer

Numa classe do  PS 1.6 se utiliza o contexto ($this->context->customer->id);

 

Olá Daniel e obrigado pela dica, mas como faço isso? ir buscar a essa variável?
Eu uso PS 1.6
 

Share this post


Link to post
Share on other sites

9 hours ago, ruisonika said:

Olá Daniel e obrigado pela dica, mas como faço isso? ir buscar a essa variável?
Eu uso PS 1.6
 

Na realidade, se você estiver tratando apenas usuários logados, nem precisa passar a variável, visto que a mesma já vai estar disponível na classe.

(int)Context::getContext()->customer->id

Eu testaria algo assim:

public static function payLater()
    {
        $id_customer = (int)$this->id_customer > 0 ? (int)$this->id_customer : Context::getContext()->customer->id;
        if ($id_customer > 0) {
            $sql =  "SELECT ps_customer.pay_later
                    FROM ps_customer
                    WHERE id_customer =".$id_customer;
            $result = Db::getInstance()->getValue($sql);
            return $result;
        }else{
            return false;
        }
    }

Boa sorte.

Share this post


Link to post
Share on other sites

6 hours ago, Daniel - PrestaBR said:

Na realidade, se você estiver tratando apenas usuários logados, nem precisa passar a variável, visto que a mesma já vai estar disponível na classe.

(int)Context::getContext()->customer->id

Eu testaria algo assim:

public static function payLater()
    {
        $id_customer = (int)$this->id_customer > 0 ? (int)$this->id_customer : Context::getContext()->customer->id;
        if ($id_customer > 0) {
            $sql =  "SELECT ps_customer.pay_later
                    FROM ps_customer
                    WHERE id_customer =".$id_customer;
            $result = Db::getInstance()->getValue($sql);
            return $result;
        }else{
            return false;
        }
    }

Boa sorte.

Obrigado Daniel, só mais uma ajuda sff, como é que eu puxo o resultado disso no template?
{Cart::payLater(Tools::getvalue('pay_later'))}
tentei assim mas não deu.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More