错误TPL PHP Prestashop

时间:2017-07-10 13:59:09

标签: php smarty prestashop prestashop-1.7

我正在使用Prestashop,我想从我在数据库中创建的表中检索数据。我已经上了2天没有任何作用,我会发疯的。

以下是我在ProductController.php文件中输入的代码:

    private function GetAvailableAttributes($id_produit, $id_compte, $note)
    {      
    global $smarty;  
$sql = 'SELECT id_produit, id_compte, note
        FROM `'.'ps_product_avis';
    $ess=mysql_result($sql,0);
$smarty->assign('contact', $ess);
    }

以下是放在product.tpl文件中的代码:

<li>test :{$contact}</li>

这是它给出的错误:

Error message

你们其中一个人可以救我并解释问题的来源吗?

我提前感谢你。

1 个答案:

答案 0 :(得分:0)

在PrestaShop 1.7(以及1.5和1.6)中,全球var $smarty已被弃用。 您已经犯了各种错误,我会尝试用更正来解释:)

更改您的代码:

private function GetAvailableAttributes($id_produit, $id_compte, $note)
{
    /* global $smarty; DEPRECATED */ 
    $sql = 'SELECT id_produit, id_compte, note
        FROM `'._DB_PREFIX_.'product_avis`';
    /* Use always _DB_PREFIX_ constant var */

    /* $ess=mysql_result($sql,0); Use Db class instead of this old method */
    $ess = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql);

    /* $smarty->assign('contact', $ess); Deprecated use */
    $this->context->smarty->assign('contact', $ess);
}

请记住,executeS方法返回一组数组,如果有一个元素要返回。

所以你的数组将是这样的:

array(
    [0] => array(
        'id_produit' => 1,
        'id_compte' => 1,
        'note' => 'my note'
    )
);

在smarty中打印单个元素你应该做这样的事情:

{$contact[0]['note']}

它会打印my note

这就是全部:)