ruisonika Posted September 23, 2020 Share Posted September 23, 2020 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. Link to comment Share on other sites More sharing options...
Daniel - PrestaBR Posted October 8, 2020 Share Posted October 8, 2020 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); Link to comment Share on other sites More sharing options...
ruisonika Posted October 8, 2020 Author Share Posted October 8, 2020 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 Link to comment Share on other sites More sharing options...
Daniel - PrestaBR Posted October 9, 2020 Share Posted October 9, 2020 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. Link to comment Share on other sites More sharing options...
ruisonika Posted October 9, 2020 Author Share Posted October 9, 2020 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. Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now