Search code examples
smartyprestashop-1.7

Prestashop: Notice: Undefined index: produits


I'm new in prestashop: I'm trying to display the result of my query in a tpl file, and I get this error:

Notice: Undefined index: produits

This is my controller code :

class  AdminStatproduitController extends ModuleAdminController
{
    public function init() {
        parent::init();
    }

    public function initContent()
    {
         parent::initContent();

         $products = Db::getInstance()->ExecuteS('SELECT pp.id_product,  ppl.name, pps.quantity
                                            FROM  `'._DB_PREFIX_.'product` pp
                                            LEFT JOIN '._DB_PREFIX_.'product_sale pps ON pps.id_product = pp.id_product
                                            LEFT JOIN '._DB_PREFIX_.'product_lang ppl ON ppl.id_product = pp.id_product
                                            WHERE pp.cache_is_pack =0
                                            ORDER BY pps.quantity ASC 
                                            LIMIT 3');
        $pack = Db::getInstance()->ExecuteS('SELECT pp.id_product,  ppl.name, pps.quantity
                                            FROM  `'._DB_PREFIX_.'product` pp
                                            LEFT JOIN '._DB_PREFIX_.'product_sale pps ON pps.id_product = pp.id_product
                                            LEFT JOIN '._DB_PREFIX_.'product_lang ppl ON ppl.id_product = pp.id_product
                                            WHERE pp.cache_is_pack =1
                                            ORDER BY pps.quantity DESC 
                                            LIMIT 3');
        $smarty = $this->context->smarty;
        $content = $smarty->fetch(_PS_MODULE_DIR_ . 'statproduit/views/templates/admin/statproduit.tpl');
        $this->context->smarty->assign(array('produits'=>$products,
                                         'pack'=> $pack,
                                         'content' => $this->content . $content));
 }

and this is my tpl code

<section>
    <div id="formAddPaymentPanel" class="bootstrap panel">

        <form id="formAddPayment" method="post">
            <div class="table-responsive">
                <table class="table">
                    <thead>
                    <tr>
                        <th><span class="title_box ">Id Produit</span></th>
                        <th><span class="title_box ">Nom Produit </span></th>
                        <th><span class="title_box ">Quantité Produit</span></th>
                        <th><span class="title_box ">Pack Choisie</span></th>
                        <th></th>
                    </tr>
                    </thead>
                    <tbody>
                    {foreach from=$produits item=produit}
                    <tr>
                        <td>{produit} </td>
                        <td>product.name</td>
                        <td>product.quantity</td>
                        <td>delete</td>


                    </tr>

                    </tr>
                    {/foreach}
                    </tbody>
                </table>
            </div>
        </form>
    </div>
</section>

Any suggestion??

thanks


Solution

  • just change this in the controller:

     $this->context->smarty->assign('produits',$products);
        $this->context->smarty->assign('pack',$pack);
    
        $content = $this->context->smarty->fetch(_PS_MODULE_DIR_ . 'statproduit/views/templates/admin/statproduit.tpl');
        $this->context->smarty->assign('content',$this->content . $content);