2014-06-05 85 views
1

我想要做的是在OpenCart內的發票上顯示產品屬性。 我是一名PHP初學者,我可以做很少的事情。我知道MVC和OpenCart的基礎知識。Opencart:在訂單發票中顯示產品屬性

我需要爲每個產品訂單拉動$product['attributes],並將其加載到控制器文件中供我在order_invoice.tpl查看文件中使用。

我在想什麼的到目前爲止是:

'attributes' => $this->model_catalog_product->getProductAttributes($result['product_id']); 

添加此爲訂單發票控制器文件,但我不能確定在何處以及如何,另外,如果一個產品有一個以上屬性,我需要將它加載到數組中。

然後在order_invoice.tpl我需要沿着這個

<?php foreach ($order['product'] as $product) { ?> 
    <?php foreach ($product['attributes'] as $attribute) { ?> 

     <?php echo $product['attribute']; ?> 

    <?php } ?> // END FOREACH ATTRIBUTE 
<?php } ?> // END FOREACH PRODUCT 

線條呼應的東西現在我知道這是不是「審美」正確的方式來呼應PHP,它都應該是一個間一套PHP標籤,但對於像我這樣的初學者來說,更容易看到我在做什麼以及是否出現語法錯誤。

有人可以幫我寫這個,所以它可以完全工作嗎?

回答

0

你在做什麼,思考得很好。

的屬性加載的線可以被置於某處這裏(在控制器中,方法invoice()):

foreach ($products as $product) { 
    $attributes = $this->model_catalog_product->getProductAttributes($product['product_id']); 

這已經加載與該產品鏈接的所有屬性的數組。現在,將這些屬性下面的產品幾行:

   $product_data[] = array(
        'name'  => $product['name'], 
        'model' => $product['model'], 
        'option' => $option_data, 
        'quantity' => $product['quantity'], 
        'price' => $this->currency->format($product['price'] + ($this->config->get('config_tax') ? $product['tax'] : 0), $order_info['currency_code'], $order_info['currency_value']), 
        'total' => $this->currency->format($product['total'] + ($this->config->get('config_tax') ? ($product['tax'] * $product['quantity']) : 0), $order_info['currency_code'], $order_info['currency_value']) 
        'attributes' => $attributes 
       ); 

這應該是所有的控制器,現在只需要使用模板你在你的問題問的是代碼。在每行上使用<?php?>不是不美觀而是推薦的PHP輸出方式。處理模板時,應將代碼視爲HTML代碼,並且HTML必須具有優先權。然後,對HTML代碼的所有PHP修改都應放在單獨的行上以保持更好的就緒狀態。例外情況可能是迴應變量,例如

<div class="some-class"><?php echo $myVariable ?></div> 

<ul> 
    <?php foreach ($products as $product) { ?> 
    <li><?php echo $product['name'] ?></li> 
    <?php } ?> 
</ul> 

唯一的例外具有使用switch語句時,要做的第一case必須是相同的<?php ... ?>塊內,例如

<div> 
<?php switch ($var) { 
    case true: ?> 
    <?php echo 'THIS IS GONNA HAPPEN.' ?> 
    <?php break ?> 
<?php } ?> 

但我個人建議避免使用模板switch聲明不惜一切代價,因爲你甚至可以從上面的例子看到,它創建了更糟糕的可讀性HTML和PHP標籤的相當大的混亂...使用if-elseif-else聲明代替。

相關問題