2017-05-11 5 views
1

Ich bin neu in Prestashop: Ich versuche, das Ergebnis meiner Abfrage in einer tpl Datei anzuzeigen, und ich bekomme diese Fehlermeldung:Prestashop: Notice: Undefined index: produits

Notice: Undefined index: produits

Das ist mein 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)); 
} 

und das ist mein 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> 

Jeder Vorschlag ??

dank

+0

zuerst die Smarty zuweisen, dann die Smarty holen. – sadlyblue

+0

es diesen Fehler erzeugen: - "" Syntaxfehler in der Vorlage "/projet/PrestaShop/modules/statproduit/views/templates/admin/statproduit.tpl" on line 20 " {produit.id_product}" Unexpected , erwartet eines von: "}" –

Antwort

0

dies nur in der Steuerung ändern:

$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); 
0

Der vollständige Code:

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'); 
    $this->context->smarty->assign(array('produits'=>$products, 
             'pack'=> $pack)); 
    $content = $this->context->smarty->fetch(_PS_MODULE_DIR_ . 'statproduit/views/templates/admin/statproduit.tpl'); 


} 

Und für tpl:

<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.id_product} </td> 
       <td>{$produit.name}</td> 
       <td>{$produit.quantity}</td> 
       <td>delete</td> 
      </tr> 
      {/foreach} 
      </tbody> 
     </table> 
    </div> 
</form>